iOS 开发百问(9)

Jan 20, 2017 am 09:47 AM

101、编译错误:ld: library notfound for -lPods
当项目中使用了 cocoaPods 时,经常出现此错误(通常是 release 的时候)。
这是由于 pod install 后,cocoaPods 会创建一个新的 workspace。你必须关闭项目并重新打开。问题即可解决。
102、为什么 iOS 的时间总是比真实时间慢8小时 
例如,一个北京时间"2014-4-4 22:00"(字符串),需要转换成 NSDate。字符串转换成 NSDate 一般是通过 NSDateFormatter 进行的。而在 iOS 上 NSDate 以 GMT 时间存储,因此NSDateFormatter会自动将字符串当前时区的本地时间处理,即将被转换的北京时间(字符串"2014-4-4 22:00")换成 GMT 时间("2014-4-4 14:00")。如果直接把这个 NSDate(longlong,1970以来的秒数或毫秒数)传给服务器,服务器会把这个时间当成北京时间使用(实际上它却是GMT时间),这就导致时间差了8小时。
正确的做法是在这个 NSDate 的基础上加上时差。而时差的计算需要知道当前时区。[NSTimeZonesystemTimeZone]可以得到当前时区(东8区),然后用 secondsFromGMTForDate: 方法可获得这个时区(东8区)的时差(以秒计)。代码如下:

NSDateFormatter* df=[NSDateFormatter new];
// [dfsetLocale:[NSLocale currentLocale]];
df.dateFormat=@"yyyy-MM-dd HH:mm";
NSDate* date=[dfdateFromString:@"2014-4-4 22:00"];
NSTimeZone *zone =[NSTimeZone systemTimeZone];
NSInteger interval = [zonesecondsFromGMTForDate: date];
NSDate *localeDate =[date dateByAddingTimeInterval:interval];
NSLog(@"%@",localeDate);
Salin selepas log masuk

103、禁止 UITableViewController 中键盘弹出动画
TableViewController 中内置了键盘弹出动画的代码,当单元格中的输入控件弹出软键盘时,tableView 会自动向上滚动。但这个功能有时候会带来大麻烦,因为有时候输入控件会被滚动到不可视的地方。由于我们无法修改框架的代码,所以这种情况下我们必须放弃使用 TableViewController(子类化),而改用一般的UIViewController+UITableView 代替。但有时候我们必须使用TableViewContrller——例如想使用它的静态单元格,则可以通过下列方法解决。在UITableViewController 子类中覆盖 viewWillAppear 方法,禁用父类的 viewWillAppear 行为。即不要调用[superviewWillAppear:animated]一句:

-(void)viewWillAppear:(BOOL)animated{
// Override super method with don'tcall [super viewWillApper]
}
Salin selepas log masuk

104、应该在什么时候使用 NSCache
NSCache 会自动根据内存压力释放其中的某个缓存对象(例如视图被销毁,或者缓存的对象实在太多)。因此 NSCache 缓存的对象必须是可以重建的,例如这些对象——可以在需要时从网络上下载到的数据。否则,你不应当使用 NSCache——因为对象不知道什么时候就会被销毁了。
因此,使用 NSCache 时必须注意,如果检索的对象在 cache 中不存在,我们必须重建一个:

-(CachedObject)getCachedObject:(id)key{
id* obj=[NSCacheObjectobjectForKey:key];
if (cb==nil) {
obj=[[CachedObjectalloc]init]; // Recreate cached object
……
}
return obj;
}
Salin selepas log masuk

105、Pods 在 Xcode5 上Archive 的问题
问题描述:
Archive 时出现如下错误(debug 时可能是正常的):
ld: library not found for -lPods
问题是由于 Xcode5.x 现在会检测依赖项目的 architecture ,其设置必须和主项目一致,否则该依赖项目会被拒绝(即不会编译)。
解决办法:
在 Pods 项目的所有 target 下,将他们的 architecture 设置为和主项目一致。
106、如何查看一个静态库支持的 Architecture
使用“lipo -info 静态库文件”命令,例如:
lipo -info Unrar4iOS
然后终端会作如下显示:
Architectures in the fat file: Unrar4iOS are: armv7 armv6 i386
107、项目中引入某些静态库会导致在 Archive 时报“Undefined symbols forarchitecture armv7s/arm64”错误
正如问题 105 所述。除了用问题 105 中的解决方法,还有一种解决办法。
首先查看该静态库的 Architecture(参考问题106)。然后修改 Scheme 为该静态库支持的 Architecture。然后修改 Buid Settings 中的 Build Active ArchitectureOnly(仅编译为所选的架构),将值改为 Yes。然后编译即可。
108、Autolayout 下,UITableView 的高度不正确
Autolayout 下,如果有导航栏,视图上的 UITableView 受 constraints 的限制,运行时高度被 constraints 重新设置为没有导航栏的高度。此时应该实现viewDidLayoutSubviews 方法,将 constraints 的影响排除:

- (void)viewDidLayoutSubviews {
_table.frame=CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height);
}
Salin selepas log masuk

109、如何修改默认返回按钮的title?
假设导航为:A视图-->B视图
如果要改变B视图返回到A视图的返回按钮的title,只需在A视图中使用如下代码:

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:self action:nil];
B视图不用做任何操作。
Salin selepas log masuk

110、有一个空对象,但它既不是 nil,也不是 null?
它是 NSNull。你可以打印这个对象(用 po 命令或者 NSLog),则打印结果是“”,而不是“(null)”(nil 对象)。
由于O-C 的集合对象中不允许插入空值(nil),而 NSNull 并不是 nil,所以就用NSNull 对象来表示这个集合为空(表示列表结束)。而且,与 nil 不同,发送消息给一个 NSNull 将导致异常。
NSNull具有唯一的方法:[NSNull null]你可以用它来测试一个对象是不是 NSNull:

BOOL isNSNull(id any){
return [any isEqual:[NSNullnull]];
}
Salin selepas log masuk

以上就是iOS 开发百问(9)的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Versi pertama iOS 18 Apple terdedah kepada banyak pepijat: demam serius, kelewatan WeChat Versi pertama iOS 18 Apple terdedah kepada banyak pepijat: demam serius, kelewatan WeChat Jun 13, 2024 pm 09:39 PM

WWDC tahunan telah berakhir, dan iOS18 sudah pasti menjadi tumpuan perhatian semua orang. Pada masa ini, ramai pengguna iPhone tergesa-gesa untuk menaik taraf kepada iOS18, tetapi pelbagai pepijat sistem menyebabkan orang tidak selesa. Sesetengah penulis blog berkata bahawa anda harus berhati-hati semasa menaik taraf kepada iOS18 kerana "terdapat banyak pepijat." Blogger itu berkata bahawa jika iPhone anda adalah mesin utama anda, adalah disyorkan untuk tidak menaik taraf kepada iOS18 kerana versi pertama mempunyai banyak pepijat. Beliau juga meringkaskan beberapa pepijat sistem yang ditemui pada masa ini: 1. Menukar gaya ikon tersekat, menyebabkan ikon tidak dipaparkan 2. Animasi lebar lampu suluh sering hilang 3. Apl Douyin tidak boleh memuat naik video 10 saat 5 , telefon tidak boleh dibuat dan skrinnya hitam 6. Demam yang teruk.

Apple mengeluarkan semula kemas kini iOS/iPadOS 18 Beta 4, nombor versi dinaikkan kepada 22A5316k Apple mengeluarkan semula kemas kini iOS/iPadOS 18 Beta 4, nombor versi dinaikkan kepada 22A5316k Jul 27, 2024 am 11:06 AM

Terima kasih kepada netizen Ji Yinkesi, xxx_x, tomato goreng, Terrence dan stik drum ayam berempah kerana menyerahkan petunjuk! Menurut berita pada 27 Julai, Apple hari ini mengeluarkan semula kemas kini iOS/iPadOS 18 Beta 4 untuk pembangun Nombor versi dalaman telah dinaik taraf daripada 22A5316j kepada 22A5316k Pada masa ini tidak jelas perbezaan antara dua kemas kini versi Beta 4. Pembangun berdaftar boleh membuka apl "Tetapan", masukkan bahagian "Kemas Kini Perisian", klik pilihan "Kemas Kini Beta", dan kemudian togol tetapan Beta Pembangun iOS18/iPadOS18 untuk memilih versi beta. Memuat turun dan memasang versi beta memerlukan ID Apple yang dikaitkan dengan akaun pembangun. Dilaporkan pada 24 Julai, iO

Apple mengeluarkan pakej Swift sumber terbuka untuk penyulitan homomorfik, digunakan dalam iOS 18 Apple mengeluarkan pakej Swift sumber terbuka untuk penyulitan homomorfik, digunakan dalam iOS 18 Jul 31, 2024 pm 01:10 PM

Menurut berita pada 31 Julai, Apple mengeluarkan kenyataan akhbar semalam (30 Julai), mengumumkan pelancaran pakej Swift sumber terbuka baharu (swift-homomorphic-encryption) untuk membolehkan penyulitan homomorphic dalam bahasa pengaturcaraan Swift. Nota: Penyulitan Homomorfik (HE) merujuk kepada algoritma penyulitan yang memenuhi sifat operasi homomorfik teks sifir Iaitu, selepas data disulitkan secara homomorfik, pengiraan khusus dilakukan pada teks sifir, dan hasil pengiraan teks sifir yang diperolehi diproses pada masa yang sama. masa. Teks biasa selepas penyahsulitan keadaan adalah bersamaan dengan melakukan pengiraan yang sama secara langsung pada data teks biasa, mencapai "halimunan" data. Teknologi penyulitan homomorfik boleh mengira data yang disulitkan tanpa membocorkan data asas yang tidak disulitkan kepada proses operasi.

Kemas kini | Penggodam menerangkan cara memasang Epic Games Store dan Fortnite pada iPad di luar EU Kemas kini | Penggodam menerangkan cara memasang Epic Games Store dan Fortnite pada iPad di luar EU Aug 18, 2024 am 06:34 AM

Kemas kini: Saunders Tech telah memuat naik tutorial ke saluran YouTubenya (video dibenamkan di bawah) yang menerangkan cara memasang Fortnite dan Epic Games Store pada iPad di luar EU. Walau bagaimanapun, bukan sahaja proses itu memerlukan versi beta khusus iO

Ciri baharu apl 'Nota Tanpa Batas' iOS 18 Apple: fungsi Scenes diperluas, penjajaran grid diperkenalkan Ciri baharu apl 'Nota Tanpa Batas' iOS 18 Apple: fungsi Scenes diperluas, penjajaran grid diperkenalkan Jun 02, 2024 pm 05:05 PM

Menurut berita pada 1 Jun, media teknologi AppleInsider menerbitkan catatan blog hari ini, menyatakan bahawa Apple akan melancarkan fungsi navigasi baharu "Scenes" untuk sambungan aplikasi "Freeform" dalam sistem iOS18, dan menambah pilihan baharu untuk penjajaran objek. Pengenalan kepada aplikasi "Wubianji" Pertama, mari kita perkenalkan secara ringkas aplikasi "Wubianji" Aplikasi ini akan dilancarkan pada tahun 2022 dan kini telah melancarkan versi iOS, iPadOS, macOS15 dan visionOS. Pengenalan rasmi Apple adalah seperti berikut: "Nota Tanpa Batas" ialah alat yang sangat baik untuk mengubah inspirasi menjadi realiti. Lakarkan projek, reka bentuk papan mood atau mulakan sumbang saran pada kanvas fleksibel yang menyokong hampir semua jenis fail. Dengan iCloud, semua papan anda

Versi Apple iOS 17.5 RC dikeluarkan: membolehkan pengguna iPhone EU memuat turun aplikasi daripada tapak web Versi Apple iOS 17.5 RC dikeluarkan: membolehkan pengguna iPhone EU memuat turun aplikasi daripada tapak web May 08, 2024 am 09:30 AM

[Klik di sini untuk pergi terus ke tutorial peningkatan] Menurut berita pada 8 Mei, Apple menolak kemas kini iOS17.5RC (nombor versi dalaman: 21F79) kepada pengguna iPhone hari ini. Kemas kini ini tinggal 70 hari lagi daripada keluaran terakhir. Bagaimana untuk menaik taraf versi pembangunan iOS/iPadOS/watchOS/macOS dan versi beta awam? Untuk menaik taraf versi pratonton pembangun iOS/iPadOS17 dan versi beta awam, anda boleh merujuk kepada pengalaman yang dikongsi oleh rakan: Siaran Pengalaman 1||Siaran Pengalaman 2||Siaran Pengalaman 3||Siaran Pengalaman 4. Bermula dari iOS/iPadOS 16.4 Developer Preview Beta 1, anda perlu mendaftar untuk Apple Developer Program Selepas pendaftaran, buka sistem [Settings] [Software Update] untuk melihat pilihan naik taraf. Sila ambil perhatian bahawa iPhone atau IP anda

Pratonton Pembangun Apple iOS/iPadOS 18 Beta 4 dikeluarkan: Menambah kertas dinding CarPlay, memilih tetapan pilihan, kawalan kamera dipertingkat Pratonton Pembangun Apple iOS/iPadOS 18 Beta 4 dikeluarkan: Menambah kertas dinding CarPlay, memilih tetapan pilihan, kawalan kamera dipertingkat Jul 24, 2024 am 09:54 AM

Terima kasih kepada netizen Burger Kaki Ayam Pedas, Soft Media New Friends 2092483, Handwritten Past, DingHao, Xiaoxing_14, Wowotou Eat Big Kou, Feiying Q, Soft Media New Friends 2168428, Slades, Aaron212, Happy Little Hedgehog, Little Earl, Clues for the little susu kucing yang makan ikan! [Klik di sini untuk pergi terus ke tutorial naik taraf] Menurut berita pada 24 Julai, Apple hari ini menolak kemas kini versi pratonton pembangun iOS/iPadOS18 Beta4 (nombor versi dalaman: 22A5316j) kepada pengguna iPhone dan iPad keluaran terakhir. Kertas Dinding Carplay Apple telah menambahkan kertas dinding pada CarPlay, meliputi mod terang dan gelap Gaya kertas dindingnya serupa dengan iPhone

Sekiranya iPhone12 ios16 dikemas kini kepada ios17.5beta3? Bagaimanakah pengalaman ios17.5beta3? Sekiranya iPhone12 ios16 dikemas kini kepada ios17.5beta3? Bagaimanakah pengalaman ios17.5beta3? Apr 25, 2024 pm 04:52 PM

Perkongsian praktikal... Memandangkan Apple terus melancarkan versi iOS baharu, ramai pengguna iPhone berdepan dengan pilihan sama ada untuk menaik taraf sistem. Pengeluaran iOS17.5Beta3 terbaharu telah menarik perhatian meluas, terutamanya untuk pengguna iPhone12 sama ada mereka harus meninggalkan iOS16 sedia ada dan mencuba versi Beta baharu telah menjadi persoalan yang patut dibincangkan. Berdasarkan pengalaman sebenar, artikel ini menganalisis kebaikan dan keburukan menaik taraf iPhone 12 kepada iOS 17.5 Beta 3 untuk memberikan rujukan kepada majoriti peminat Apple. Pertama sekali, kami perlu menjelaskan dengan jelas bahawa versi Beta biasanya digunakan oleh pembangun atau pengguna awal yang sanggup mengambil risiko tertentu. Ini bermakna berbanding dengan versi rasmi, versi Beta mungkin mengandungi

See all articles