IOS 項目問題總結


 

把自己項目中遇到的問題總結一下,供大家參考,希望大家多多提出意見!!

 

 在Xcode 6.2中遇到Your build settings specify a provisioning profile with the UUID, no provisioning profile was found錯誤

1.找到項目中的**.xcodeproj文件,點擊右鍵,或者直接點擊項目名稱,右鍵 show in finder (打開包內容)。
2.打開后找到project.pbxproj文件,用文本編輯器打開。其實就是右鍵,點擊open就好了。
3.打開這個文件后,按command+F,在這個文件中查找“PROVISIONING_PROFILE",找到和這個“
PROVISIONING_PROFILE = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";
"PROVISIONING_PROFILE[sdk=iphoneos*]" = "487F3EAC-05FB-4A2A-9EA0-31F1F35760EB";”類似的都刪除。
4.然后保存文件,重新打開項目。xcode會提示你重新下載安裝provisioning profile文件。下載后安裝上就可以。

 

// 讓scrollView適應界面的高度,不會在界面中來回搖晃

    self.automaticallyAdjustsScrollViewInsets = NO;

 

1.  在每個頁面的入口和出口(一般是viewDidLoad和dealloc)打上日志,可以了解用戶的操作流程,並查出頁面在關閉時是否銷毀了相應的對象。

2.  定時器NSTimer 需要在一個新線程中運行,否則UI操作會阻塞定時器。

3.  需要為定時器所在的線程設置NSRunLoop,否則定時器可能不會動。

4.  如果在線程中設置了NSRunLoop,需要在銷毀線程時也將其停止,使用CFRunLoopStop 。

5.  所有的UI操作都應該在主線程中執行,否則會導致應用崩潰(不一定是立即崩潰)。

6.  如果項目中有c函數,出現同名的函數會導致應用編譯失敗,即使這些c函數處於不同的頁面中。

7.  使用ASIHttpRequest,同步下載過程是不能被取消的,異步下載過程才可以被取消。

8.  應用內支付,支付成功的回調里面,還需要對加密數據transactionReceipt 進行驗證,避免越獄的機器使用 IAPFree 等軟件偽造數據。

9.  不要試圖獲取設備的UDID,否則會造成應用審核不通過。可以使用OpenUDID 或者 Mac 地址代替。

10.將比較費時的操作不要放在主線程中執行,避免UI響應慢。應該在一個新線程中執行(對有同步要求的操作除外)。

11.使用最新的Xcode and iOS SDK進行開發,對高版本的兼容性會好一些。例如Mac 10.6下只能安裝Xcode4.2and iOS SDK 5.0 ,對iOS 5.1版本的系統就不能直接調試。

12. 圖片命名:例如有一張圖片為 MyImage.png,為了兼容不同設備,需要存為不同分辨率的圖片,命名規則如下:

 

  • MyImage.png - 默認的圖片名稱。

  • MyImage@2x.png - 適用於Retina 顯示屏的高分辨率圖片。

  • MyImage~iphone.png - 適用於iPhone 和 iPod touch的圖片。

  • MyImage@2x~iphone.png - 適用於iPhone and iPod touch 設備 Retina 顯示屏的高分辨率圖片。

  • 在顯示圖片時,只需要直接取 @"MyImage.png",系統就能根據當前的設備,自動讀取相應的圖片了。

  • 注意:以上圖片命名規則只使用於UIKit框架。如果使用了cocos2d等其他框架,則有另外一套命名規則。

一些好用的框架/組件:

1.  PDColoredProgressView進度條組件,可以設置進度條的顏色,支持iOS4。但是在ASIHttpRequest的下載進度條中不好使用。

2.  MTLabel可以對label中的文字設置行高。

3.  TSAlertView可以在彈出框(UIAlertView)中設置輸入框,類似於JavaScript中的prompt 。

4.  ZipArchive對文件進行壓縮和解壓操作。

5.  ASIHTTPRequest數據的上傳和下載,以及斷點續傳。

6.  json-framework文件格式解析。

性能優化

1.  使用xcode自帶的 Instruments工具可以查看應用的內存,cpu等資源使用情況。

2.  JSON格式解析速度優化。有人分析說 JSONKit 比 json-framework 效率更高。

日志跟蹤

1.  友盟,比較全面的數據分析工具。

2.  Crashlytics.framework可以記錄應用程序崩潰日志,並快速定位到出問題的代碼行。國內可能需要翻牆。

 

 

ios 項目問題解決總結(2)

 
1.最近學習coreImage,coregraphics,了解相關的畫筆相關的問題,關於混合模式的設計,畫布上undo,redo的操作實現?(2014 7.15)
 
一:混合模式
(1) // 將UIImage轉換成CIImage

    CIImage *ciImage1 = [[CIImage alloc] initWithImage:self.imageView1.image];

    CIImage *ciImage2 = [[CIImage alloc] initWithImage:self.imageView2.image];

    // 創建濾鏡

    CIFilter *filter = [CIFilter filterWithName:@"CIMultiplyBlendMode"

                                  keysAndValues:kCIInputImageKey, ciImage1 ,kCIInputBackgroundImageKey,ciImage2,nil];

    NSLog(@"%@",filter.attributes);

    [filter setDefaults];

    // 獲取繪制上下文

    CIContext *context = [CIContext contextWithOptions:nil];

    // 渲染並輸出CIImage

    CIImage *outputImage = [filter outputImage];

    // 創建CGImage句柄

    CGImageRef cgImage = [context createCGImage:outputImage

                                       fromRect:[outputImage extent]];

    // 獲取圖片

    UIImage *showImage = [UIImage imageWithCGImage:cgImage];

    // 釋放CGImage句柄

    CGImageRelease(cgImage);

(2) CGSize newSize = CGSizeMake(320, 480);

   

    UIGraphicsBeginImageContext(newSize);

    [self.imageView2.image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];

    [self.imageView1.image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)blendMode:kCGBlendModeMultiply alpha:1.0];

    UIImage *blendImage =UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

二:undo/redo功能

實際上是存儲畫過的path,width,alpha 到集合中,undo刪除集合最后一個重新全部從數組依次取出path,width,alpha重新在畫布上畫,redo,是undo操作時將該path放入緩存的數組之中,redo時取出添加到原數組,再次重繪。

 

好資源:http://www.cnblogs.com/xdream86/archive/2012/12/12/2814552.html

 

2.Undefined symbols for architecture i386:問題

解答:一般是第三方庫的問題。

 

3.解析網絡請求返回的字典數據時注意使用dir[@"data.text"],注意dir[@"data"] 是否存在,不然會報NSNull 錯誤,今天因為這個原因廢了好長時間。

 

4.最近做一個播放網絡視頻的例子:

代碼如下:

-(void) playVideo:(NSString*) urlStr

{

    NSURL *url=[[NSURL alloc] initWithString:urlStr];

    self.moviePlayer=[[MPMoviePlayerController alloc] init];

    self.moviePlayer.movieSourceType = MPMovieSourceTypeStreaming;

    [self.moviePlayer setContentURL:url];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:)name:MPMoviePlayerPlaybackDidFinishNotification object:nil];

    self.moviePlayer.controlStyle=MPMovieControlStyleDefault;

    self.moviePlayer.shouldAutoplay=YES;

    [self addSubview:self.moviePlayer.view];

    [self.moviePlayer setFullscreen:YES animated:YES];

}

 

- (void)moviePlayBackDidFinish:(NSNotification*)notification

{

    [[NSNotificationCenter defaultCenter] removeObserver:self

                                                    name:MPMoviePlayerPlaybackDidFinishNotification object:nil];

    if ([self.moviePlayer respondsToSelector:@selector(setFullscreen:animated:)])

    {

        [self.moviePlayer.view removeFromSuperview];

    }

}

注意要點:點擊播放后,回調還沒有執行,self不能被銷毀,否則回調出錯

 

5.注意寫項目時能直接用hidden的就不要用removeFromSuperView

 

6.最近項目用到tableView,出現這樣的情況,刪除最后一行后,reload,再次點擊最后一個列表還是不能點擊(8.22)

原因:刪除操作未完成,就開始reload 解決:延遲reload操作0.1s

7.今天更新項目,刪掉了.xib文件后程序無法正常啟動(8.25)

原因:mian.m中代碼錯誤 解決改為與AppDelegate關聯即可

 

8.今 天更新關於圖片特效處理的項目,使用到數據的存儲,起初用int*去存儲,發現真機上一運行就crash,發現是因為像素點的數據值太大超過范圍值。

解決:改為用unsign char*去存儲,每個像素點存4個值。

 

9.更新項目遇到一個問題;

問題描述:tableView 點擊cell,跳轉,返回,再次點擊cell ,running in loop.

分析:重復調用-reloadRowsAtIndexPaths:withRowAnimation:觸發tableView去請求數據,程序將陷入死循環。

解決:不要重復調用-reloadRowsAtIndexPaths:withRowAnimation:,data與UI區分開來。

 

 
1、在使用第三方基於FlipSquaresNavigationController做動畫的時候(push),在做動畫的過程中會出現動畫卡的現象,原因是在FlipSquaresNavigationController做動畫的方法里面,調用了下個界面的.view屬性,這個時候會執行viewDidLoad方法,如果在viewDidLoad里面創建UI的話,會占用主線程,照成動畫的卡頓,解決方法可以在viewWillAppear:或者是viewDidAppear:里面創建UI .
2.、在使用UICollectionView的時候,崩潰出現'UICollectionView must be initialized with a non-nil layout parameter’,原因是沒有進行UICollectionViewFlowLayout的初始化。
解決方法:
UICollectionViewFlowLayout *layout= [[UICollectionViewFlowLayout alloc]init];
self.collectionView = [[UICollectionView alloc]initWithFrame:self.view.bounds collectionViewLayout:layout];
[self.view addSubView:self.collectionView];  
[self.collectionView registerClass:[UICollectionViewCell class]
        forCellWithReuseIdentifier"Cell"];
self.collectionView.delegate=self;
self.collectionView.dataSource=self;
 
注意出現:delegate,dataSource協議的時候
self.collectionView.delegate=self;
self.collectionView.dataSource=self;
對應的在.h里面一定要加:<UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>
3、網絡返回數據為<null>時,不知道如何進行判斷,出現這種情況的原因就是,后端返回的數據沒有給默認值,可以通過[responseData isEqual:[NSNull null]]進行判斷。
4、在IOS7中UINavigationController中使用UITextView或者UIScrollView的時候,文本的對齊方式,垂直方向的對齊方式是居中對齊,不是上對齊,需要在viewDidlLoad里面添加:
automaticallyAdjustsScrollViewInsets
if([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0){
        self.automaticallyAdjustsScrollViewInsets = NO;
    }

1、IOS UTF-8編碼(POST上傳的時候,漢字上傳的格式為%AE 這種形式),可以通過下面方法進行轉換。
      NSString* encodedString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringE ncoding];

解決方案 :NSString * encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorD efault, (CFStringRef)urlString,NULL,NULL,kCFStringEncodingUTF8);

 

2、鍵盤上面View在改變鍵盤類型的時候,View的frame值實時改變,

可以使用通知中心來進行觀察,實時的改變View的 frame。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];

也可 以設置鍵盤的inputView。

 

3、在解析網絡返回數據的時候,接收數據類型不匹配,比如: 比如說返回的是NSNumber,接收用NSString。

 

4、數組越界的問題(常見情況是:先進⾏網絡請求的語句,但是在下面語句緊接着就使用了接收網絡數據的NSArray或者是 NSMutableArray),對⼀個元素個數為0的數組進行 objectAtIndex:操作,導致數組越界,

解決方法是在從數組中取元素的時候,對數組進⾏[array count]判斷;保證數組中元素個數不為0,然后再對數組進行操作。

 

5、⺴絡返回數據為<null>時,不知道如何進行判斷,出現這種情 況的原因就是,后端返回的數據沒有給默認值,可以通過 [responseData isEqual:[NSNull null]]進行判斷。

 


 6、學⽣從網上下載的demo,在參照demo⾃己寫的時候,莫名其妙的出現崩潰的情況,⼀般情況下都是,網上的Demo使⽤的時ARC,但是學⽣在⾃己⼯程里⾯使用的時MRC,導致某些對 象提前釋放。

解決方法,在TARGETS-Build Phases-Compile

Sources 對應的.m⽂文件添加-fobjc-arc。如果想讓某個類不使⽤用 ARC那么可以在TARGETS-Build Phases-Compile Sources 對應 的.m⽂文件添加-fno-objc-arc。

 

7、在IOS7中UINavigationController中使⽤用UITextView或者 UIScrollView的時候,⽂本的對齊⽅式,垂直方向的對齊方式是居中對齊,不是上對齊,

需要在viewDidlLoad⾥面添加: automaticallyAdjustsScrollViewInsets

if([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0){

}

在使⽤用UIScrollView的時候也會出現偏移。

 

8、在使⽤用UICollectionView的時候,崩潰出 現'UICollectionView must be initialized with a non-nil layout parameter’,

原因是沒有進⾏行 UICollectionViewFlowLayout的初始化。

解決⽅方法:

UICollectionViewFlowLayout *layout= [[UICollectionViewFlowLayout alloc]init]; self.collectionView = [[UICollectionView alloc]initWithFrame:self.view.bounds collectionViewLayout:layout];

[self.view addSubView:self.collectionView]; [self.collectionView registerClass:[UICollectionViewCell class]

forCellWithReuseIdentifier:@"Cell"]; self.collectionView.delegate=self; self.collectionView.dataSource=self;

注意出現:delegate,dataSource協議的時候 self.collectionView.delegate=self; self.collectionView.dataSource=self; 對應的在.h⾥里⾯面⼀一定要加: <UICollectionViewDataSource,UICollectionViewDelegateFlowL ayout>

 

9、在導入CocoaHTTPServer框架的時候,在已經導入libxml2的 情況下,設置了header search path為${SDCROOT}/usr/include/

self.automaticallyAdjustsScrollViewInsets = NO; // Avoid
the top UITextView space, iOS7 (~bug?)

libxml2,仍出現unknown type name ‘xmlNodePtr’等20個錯 誤,原因是libxml2在其他⽂文件夾⾥面(比如在cocos2d-x的⽂件 夾⾥面),另外導入libxml2類似框架的時候是在TARGETS-Build Phases-Link Binary With Libraries,⽽不是在*Tests下。

 

10、在⼀一個試圖模態除⼀一個試圖的時候,出現Presenting view controllers on detached view controllers is discouraged <*>,

解決⽅方法: 程序運⾏行的過程中出現’Only run on the main thread!’,是 因為更新UI不是在主線程進⾏行的。

 

12、UITableViewCell的在IOS5和IOS6有不同的初始化方法,在 IOS6中采用- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath對 UITableViewCell進⾏行初始化時,需要使⽤用配套的- (void)registerClass:(Class)cellClass forCellReuseIdentifier:(NSString *)identifier⽅方法對 UITableViewCell進行注冊。

13、在使用百度地圖API的時候,先需要在appDelegate⾥面設 置百度地圖的代理,不然進⼊主屏幕之后是⿊色的。

14、在使⽤用UITableView的時候,section會停留在屏幕的最上⽅,直到滑動到下⼀個分區,解決方法,tableView的樣式選⽤group,然后⾃定義headerView。

 15、涉及到網絡請求和UITableView結合展示數據的時候,出現數組越界問題,

原因是:⺴絡請求還沒有完成,但是在 UITableView的代理⽅法⾥面已經開始使⽤用數組(對一個元素個 數為0的數組調用objectAtIndex:⽅法),解決⽅法是在使用數組 的時候判斷數組中元素個數,不為0才進⾏行操作。

 16、在使⽤用第三⽅方抽屜效果(DDMenu)的過程中,如果從 Center試圖Push到下級ViewCOntroller(AViewController),那么 在AViewController中使⽤用手勢仍可以返回DDMenu的左視圖,如果想取消這個效果,那么可以在AViewController中把DDMenu的 ⼿手勢暫時關閉。

 

17、如果對⼀個數組使用系統的copy,那么copy得到的數組是 個不可變的數組。

[self.view.window.rootViewController
presentViewController:viewController animated:YES
completion:nil];

18、在類的.h⾥里⾯面,如果在#import <Foundation/Foundation.h> 的下⼀一⾏行寫代碼的話,不會⾃自動補全,還有如果參數⾥里⾯面有中⽂文 的話,Xcode不提⽰示也不會⾃自動補全,但是可以使⽤用。如: _showBookLabel1.text = [NSString stringWithFormat:@"作者: %@ 類型:”,_assigenModel.author_name];author_name不提 ⽰示,但是能使⽤用。

 

19、在使⽤本地通知的時候,如果注冊過通知,但是把程序刪除 之后,再次安裝的時候,會出現兩次通知提醒(因為這些通知加⼊到系統⾥面)。解決方案是在進入程序時把之前的通知刪除掉。

 

20、在UITableViewCell中動態展示數據的時候,可以在自定義 Cell里面寫⼀個類⽅法來專門計算Cell的高度。

 

21、在使⽤用第三⽅方基於FlipSquaresNavigationController做動畫 的時候(push),在做動畫的過程中會出現動畫卡的現象,原因 是在FlipSquaresNavigationController做動畫的⽅法里面,調用了下個界面的.view屬性,這個時候會執⾏行viewDidLoad⽅方法,如 果在viewDidLoad⾥面創建UI的話,會占用主線程,照成動畫的卡頓,解決⽅法可以在viewWillAppear:或者是viewDidAppear:⾥面創建UI .

 

22、深拷貝和淺拷貝的最大區別是copy出來的成員對象地址是否一致,如果子對象地址改變,則是深拷貝,反之,則是淺拷貝

 

23、 UITableView 定位到某個分區或者某⼀⾏

NSIndexPath *scrollIndexPath = [NSIndexPath indexPathForRow:0 inSection:3];
[_tableView scrollToRowAtIndexPath:scrollIndexPath

atScrollPosition:UITableViewScrollPositionTop

animated:YES];

 

24、學生在做視頻播放和下載的時候出現這個錯誤 RTCReporting: resolve from https://qtpartners.apple.com/ storebags/hls?version=4.10,解決⽅方案(換台機器或者換個 Xcode就可以)

。⺴⽹網上找的相似的錯誤給出的解決⽅方案是:1、This seems to be a problem with trying to play videos on the simulator. I've had this problem for months now, and just ran into it again

today when I was trying to play video on my simulator.

The solution, while not great, is to use an actual device instead of the simulator for testing video playing.

2、You need use: [player play];

after you sound play in the real device and in simulator.

 

25、IOS7狀態欄的適配問題http://beyondvincent.com/blog/2013/11/03/120-

customize-navigation-status-bar-ios-7/

 

 

26、完整的單例模式,需要重寫retain、release、autorelease、retainCount等 ⽅方法.相關介紹http://beyondvincent.com/blog/2013/05/09/20/,https:// developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ CocoaFundamentals/CocoaObjects/CocoaObjects.html

27、在使⽤從別⼈人那邊拷貝過來的工程,只有My mac 64-bit可選,模擬器都不能使用,解決方法:首先關閉你的Xcode,找到你出現解決此問題的項⺫目錄下, 然后此項⺫目的***.xcodeproj ⽂文件,然后右鍵選擇“顯示包內容”,如下圖:

!

page5image4400 page5image4560 page5image4720 page5image4880 page5image5040 

一般情況下,包中有如下3個⽂文件:

1.project.pbxproj 2.project.xcworkspace 3.xcuserdata

找到“xcuserdata”這個罪魁禍⾸首,將其整個移到廢紙簍中,OK,重新打開你的項⺫⽬目,

則正常顯⽰示可使⽤用的Simulator;(http://www.himigame.com/iphone-cocos2d/

621.html)

 

 

29、學⽣生在聲明實例變量的時候使⽤了NSString *_string;這樣在使用的過程中取到的

是一個地址,因為這個NSString *_string;在CAValueFunction沖突。如果命名沒問

題,也有可能的原因是這個對象被提前釋放了,retain⼀下也許就可以了。

 

 

30、得到當前⼯工程的目錄”$(SRCROOT)”

 

 

31、ShareSDK真機出現Undefined symbols for architecture arm64:

"_OBJC_CLASS_$_WeiboApi", referenced from: objc-class-ref in

MMAppDelegate.o,解決⽅方法http://blog.csdn.net/topbar/article/details/

21449643<iOS7.1 編譯報錯 解決⽅方案 體會>

 

 

32、如果創建的工程,運行時發現self.view的⾼高度只有480,那么原因就是缺少了4

英寸的啟動圖片Default-568h@2x.png.

 

 

33、百度地圖錯誤[__NSCFString stringFromMD5]: unrecognized selector sent to

instance 0x1f836730

project->build setting->other linker flags

寫上 -ObjC

百度地圖常⻅見錯誤:

(1)編譯正常,運⾏行報 [UIDevice uniqueGlobalDeviceIdentifier]:

unrecognized selector sent to此時需要 other linker flags 添加 -all_load參 數。

具體:Project ->build settings ->linking->Other Linker flags (2)編譯報 Undefined symbols for architecture armv7。請檢查有沒有添加 QuartzCore.framework 和 CoreLocation.framework

(3) BMKMapManager強烈建議通過單例模式管理起來,並且不要⼿手動調⽤用其 release⽅方法。

(4) 進⾏行⽤用戶位置定位時除了要設置showsUserLocation = YES,還要在 mapView:didUpdateUserLocation:⽅方法中調⽤用 setCenterCoordinate:animated

另外⼀一定要在dealloc中,或者其他離開⻚頁⾯面的地⽅方調⽤用showsUserLocation = NO,否則會出現第⼆二次push到定位⻚頁⾯面時,不會重新定位問題。

(5) 必須⾄至少讓⼀一個類保持.mm⽂文件,或者按照官⽅方修改編譯器類型。 (6) lipo –create Release-iphoneos/libbaidumapapi.a Release-

iphonesimulator/libbaidumapapi.a –output libbaidumapapi.a 如果報錯,請 改成

lipo –create –output libbaidumapapi.a Release-iphoneos/ libbaidumapapi.a Release-iphonesimulator/libbaidumapapi.a 就能解決。 34、提醒學⽣生在往⼯工程⾥里⾯面拖⽂文件的時候⼀一定要選擇copy和addToTargets.

 

35、某些控件的可交互性userInteractionEnabled<這種問題我感覺可以不予解 決,只要前期講師多次強調過的話>。


36、note: after modifying system headers, please delete the module cache at ‘/Users/sumomochuufuku/Library/Developer/Xcode/ DerivedData/ModuleCache/2NEVAP7X943D2’。。解決辦法:前往 '/Users/ sumomochuufuku/Library/Developer/Xcode/DerivedData/ModuleCache/ 2NEVAP7X943D2 這個⽂文件夾,刪除其⽂文件夾中的內容,然后運⾏行app,沒問題 了,注意不是刪除 2NEVAP7X943D2 ⽂文件夾,⽽而是其中的內容。然后再 clean下 項⺫⽬目就可以了(product -> clean)<IOS7開發錯誤收集http://blog.csdn.net/ smallsky_keke/article/details/16117653>

 

 

37、如果你的應用程序是從別人那邊拷貝過來的,如果提示第三方開源框架使⽤用錯誤或者找不到,那么把第三方開源框架重新導⼊一遍有時就可以了

 

38、運⾏行xcode在真機上,或者archive打包時,都會彈出輸⼊入⽤用戶名和密碼的框 :”Mac OS X"想要進⾏行更改。鍵⼊入管理員的名稱和密碼以允許執⾏行此操作("Mac

OS X”想使⽤用系統鑰匙串),解決⽅方法如下<http://blog.csdn.net/rhljiayou/ article/details/13296811> 39、Xcode5去除⾼高光效果:http://blog.csdn.net/qtc_2012/article/details/ 18087745

1.⾸首先,在General中App Icons 使⽤用Source--> AppIcon 2.在 Images.xcassets 中依次添加對應尺⼨寸的icon. 3.選中AppIcon ,在右側第三個按鈕下,勾選 iOS icon is pre- rendered.

4.編譯,運⾏行,icon 的⾼高光效果就沒有了. PS:如果,還存在的話,請將app先卸載,然后重新運⾏行即可.

 

 

40、如果使⽤用mailcore2第三⽅方開源框架,那么需要聯⺴⽹網下載東⻄西,如果⺴⽹網絡 不通暢的話會報錯。


41、XCode 5 “ios模擬器未能安裝此應⽤用程序”解決辦法:http:// blog.csdn.net/somestill/article/details/19402049

 

42、在IOS中使⽤用系統JSON解析的的時候,發現返回數據是JSON格式,但 是解析出來是個null,可能是返回數據的編碼格式問題,可以嘗試使⽤用ASI的 responseString,然后把responseString轉換成NSData,在使⽤用系統的 JSON解析就可以了。

43、百度地圖和ShareSDK⼀一起使⽤用的時候,最后報錯duplicate symbol _isRetina in,解決⽅方案把all_load取消掉。

 

44、如果學⽣生在使⽤用第三⽅方靜態庫如ShareSDK的時候出現錯誤Undefined symbols for architecture arm64:或者是X86-64,當前的靜態庫不⽀支持64

page7image5152 page7image5312   page7image5632 

位,需要在Build Settings下⾯面,刪除Valid Architectures 下的arm64 ,並且改Build Active Architecture Only改為NO.


45、如果在使⽤用真機拍照,圖⽚片保存到本地Document⽂文件,再次取出圖⽚片的 時候出現圖⽚片旋轉了90°可以使⽤用以下⽅方法解決:

CGImageRef oldImageRef=image.CGImage;

UIImage* newImage=[UIImage imageWithCGImage:oldImageRef scale:.1 orientation:UIImageOrientationRight];

參考鏈接:http://www.2cto.com/kf/201404/290777.html

 

46、如果想在iOS中設置狀態欄是⽩白⾊色,那么需要[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];另外在plist⽂文件⾥里 將View controller-based status bar appearance改為NO

47、在播放音樂的時候,如何設置都沒有問題,但是沒有聲音,這個時候需要 考慮播放器是否設置為局部變量了。

 

48、如果UITableViewCell,didSelect⽅方法不走,其他代理⽅法都走,那么是有手勢截獲了UITabelViewCell的didSelect事件

 

49、Xcode中獲取⼯工程的相對路徑:$(SRCROOT)

 

50、在使⽤用CoreData的時候出現Receiver type 'NSManagedObjectContext' for instance message is a forward declaration 等9個(不確定,或者是7個)錯誤,是因為雖然導入了 CoreData框架,但是沒有在.pch⽂文件⾥里⾯面#import,參考鏈接:http:// blog.csdn.net/xiaoxuan415315/article/details/7940861

 

51、如果程序在運⾏行的時候崩潰,出現的提示的某個類調了 setValue:forUndefinedKey:,並且這個key在這個類⾥⾯或者整個工程里面都不能搜索到,那么這個時候就要考慮使⽤用Storyboard的時候,一個控件拉了兩根線的情況。

 

52、在使⽤用shareSDK進行QQ空間分享的時候,出現提示could not build module uikit,把模擬器換成真機調試

 

53、同時使⽤百度地圖SDK和百度導航SDK的時候出現以下10個錯誤的解決方案是在build settings中的other linker flags添加-Objc

page8image6400 page8image6560 page8image6720

錯誤如下:ld: warning: directory not found for option '-L/Users/ lanou3g/Documents/Daemonson/NavigationGo/baiduNaviSDK/ Statistic'
Undefined symbols for architecture i386:

"_MSR_Close", referenced from:
CVMFE::mfeClose() in libbaiduNaviSDK.a(VMFE.o)

"_MSR_Detect", referenced from: CVMFE::mfeDetect() in libbaiduNaviSDK.a(VMFE.o)

"_MSR_Exit", referenced from:
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)


54、Xcode每次修改后,編譯提⽰示“Developer tools access”,需要控制另 一個進程才能繼續調試,可以使⽤如下終端命令解決。sudo /usr/sbin/ DevToolsSecurity —enable。參考連接:http://blog.csdn.net/xyxjn/ article/details/16111773

54、上傳程序的時候出現Missing  Screenshot”,可能原因是創建工程的時 候選擇的是混合工程,但是沒有iPad的截圖  

55、優酷m3u8地址格式,1、http://v.youku.com/player/getM3U8/vid/ XNzI3NTI1NjUy/type/flv      2、http://pl.youku.com/playlist/m3u8? vid=XNzIwMDE5NzI4&type=mp4  
http://pl.youku.com/playlist/m3u8?

vid=162779600&ts=1407469897&ctype=12&token=3357&keyframe= 1&sid=640746989782612d6cc70&ev=1&type=flv&ep=dCaUHU2LX8YJ 4ivdjj8bMyqxJ3APXP8M9BiCiNRiANQnS%2B24&oip=2043219268  

 

56、子線程中不要進行UI的更新,並且如果子線程有自動釋放對象,那么需要 手動添加自動釋放池。  

 

57、No  architectures  to  compile  for  (ARCHS=armv7  armv7s  arm64,   VALID_ARCHS=armv7s,armv7).出現這個錯誤的時候,是因為Valid   Architectures設置的格式和Architectures的格式不一樣。比如Architectures 是空格,Valid  Architectures中間是”,”(逗號)。

 

58、Core  Data:Receiver  type  ‘NSManagedObjectContext’  for  class   is  a  forward  declaration。解決方案:在使用core  Data時出現如題  錯誤,已 在項目中加入了Coredata.framework,最終在stackoverflow上找到答案,原 來要在  xxx.pch    中加入#import  <CoreData/CoreData.h>  

page9image8096 page9image8256 page9image8416 page9image8576 page9image8736 page9image8896

59、學生在抓取時光網的借口的時候,抓接口能抓到數據,但是在進行請求的


時候沒有數據,那是因為少了header,  
代碼如下:    NSURL  *url  =  [NSURL  URLWithString:@"http://api.m.mtime.cn/ Showtime/LocationMovies.api?locationId=290"];  

         
       NSMutableURLRequest  *request  =  [NSMutableURLRequest   requestWithURL:url   cachePolicy:NSURLRequestReloadIgnoringLocalCacheData   timeoutInterval:-1];  
       [request  setHTTPMethod:@"GET"];  
       [request   addValue:@"5,1406738416605,B99DAADA90F36E724EA7A12214774062 "  forHTTPHeaderField:@“X-MTime-Mobile-CheckValue"];   [request  setValue:@"text/html"  forHTTPHeaderField:@“Content- Type"];  
[NSURLConnection  sendAsynchronousRequest:request  queue: [NSOperationQueue  mainQueue]   completionHandler:^(NSURLResponse  *response,  NSData  *data,   NSError  *connectionError)  {                NSString  *string  =  [[NSString  alloc]  initWithData:data   encoding:NSUTF8StringEncoding];  

               NSLog(@"---  str  =  %@",  string);  

       }];  


60、遇到網絡接口返回數據亂碼:

可以使用  
NSStringEncoding  gbkEncoding   =CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_ 18030_2000);   NSString  *string  =  [[NSString  alloc]  initWithData:self.data   encoding:gbkEncoding];  

 

61、遇到錯誤,ld:  building  for  iOS  Simulator,  but  linking  against  dylib   built  for  MacOSX  file  '/Applications/Xcode.app/Contents/Developer/

Library/Frameworks/XCTest.framework/XCTest'  for  architecture  x86_64  

clang: error: linker command failed with exit code 1 (use -v to see invocation)1把下⾯面的XCTest.framework刪掉,


2然后把測試⼯工程.m⽂文件右邊的target勾選掉,保留測試(如下圖)。



62、iOS ⾃自定義字體http://blog.csdn.net/justinjing0612/ article/details/8093985


 

63、如果在抓接⼝口的過程中,能抓到數據,但是使⽤用代碼的話不能請求到數 據,那么可能的原因就是缺少了HttpHeader,⽰示例:

NSMutableURLRequest *request = [NSMutableURLRequest
  requestWithURL:[NSURL URLWithString:@“http://api.m.mtime.cn/
  Showtime/LocationMovies.api?locationId=290”]
  cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
  timeoutInterval:-1];

[request addValue:@"5,1406738416605,B99DAADA90F36E724EA7A12214774062" forHTTPHeaderField:@“X-MTime-Mobile-CheckValue"]; // 添加 HttpHeader

    [request setHTTPMethod:@"GET"];
    [NSURLConnection sendAsynchronousRequest:request queue:
  [NSOperationQueue mainQueue]
  completionHandler:^(NSURLResponse *response, NSData *data,
  NSError *connectionError) {
        NSLog(@"---- request = %@", response);
        NSLog(@"=== =%@", connectionError);
        NSLog(@"data%@", data);
        NSString *str = [NSJSONSerialization
  JSONObjectWithData:data
  options:NSJSONReadingMutableContainers error:nil];
        NSString *string = [[NSString alloc]
  initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"--- str = %@", string);

}];

forState:UIControlStateNormal]; 選中item字體顏⾊色:[[UITabBarItem appearance]

setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor
yellowColor] }forState:UIControlStateSelected];


 

64、如果在使⽤用CocoaPods的過程中,出現頭⽂文件找不到的情況,那么需 要在下⾯面的位置進⾏行配置。

 

 

63、tabBarItem的未選中title顏⾊色:[[UITabBarItem appearance] setTitleTextAttributes:@{ NSForegroundColorAttributeNam e : [UIColor whiteColor] }

65、兼容iOS8升級到Xcode6.0編譯之前的工程,結果App⽆無法在真機上運 ⾏行。報錯如下:The file “xxxx.app” couldn’t be opened because you don’t have permission to view it.

解決⽅方案:查看工程中警告,發現需要更新舊工程的設置: 點擊Upate to reconmmented settings,打開如下窗⼝口:


 

67、iOS objc_msgSend iOS too many arguments in function

call 報錯解決⽅方案


 

3. 當接口里的數據有空null 的時候, 會報錯

    在處理數據的時候進行判斷 if(data != [NSNull null])  

    (array.count > 0)等等

     nil是一個對象指針為空,Nil是一個類指針為空,NULL是基本數據類型為空 [NSNull null]數據為空

 

4. 控制table的分割線長短

 self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

    self.tableView.separatorColor = [UIColor colorWithWhite:0.668 alpha:0.8];

    [self.tableView setSeparatorInset:UIEdgeInsetsMake(0, 20, 0, 20)];

 

 

5.  設置navigationBar 的時候視圖會往上面挪動65, 需要設置

filmNC.navigationBar.translucent = NO; 清除透明度

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM