>  기사  >  백엔드 개발  >  iOS 개발 질문 (5)

iOS 개발 질문 (5)

黄舟
黄舟원래의
2017-01-20 09:34:331347검색

42. 경고: 출력 파일에 대한 다중 빌드 명령
대상이 중복된 이름을 가진 리소스를 참조합니다
현재 대상을 찾아서 확장하고 CopyBundle Resources 열을 찾은 다음 그 안에 중복된 이름이 있는 리소스를 찾고 불필요한 항목을 삭제하세요.
43. 서명 오류: 프로비저닝 프로필을 찾을 수 없습니다
Xcode에서 인증서를 업데이트한 다음 프로그램을 다시 컴파일하면 코드 서명 오류: 실제 장치 중에 프로비저닝이 항상 나타납니다. 디버깅 중 'XXXX' 프로필을 찾을 수 없습니다. 이 문제를 잘 해결할 수 있도록 아래 해결 방법에 대해 이야기해 보겠습니다.
1. 프로젝트를 닫고 XXXX.xcodeproj 프로젝트 파일을 찾은 다음 파일을 마우스 오른쪽 버튼으로 클릭하고 "ShowPackage Contents"를 선택합니다. 새로운 Finder가 열립니다. 참고: 실제로 XXXX.xcodeproj는 폴더입니다. 새로 열린 Finder에 있는 세 개의 파일은 XXXX.xcodeproj 폴더에 있는 파일입니다.
2. 새로 열린 Finder에서 project.pbxproj를 찾아 엽니다. 여기에서 이전 인증서의 인코딩 정보를 찾으세요. 이전에 보고한 오류 메시지는
CodeSign error: Provisioning profile '37D44E7F-0339-4277-9A82-C146A944CD46'이었으므로 검색 방법을 사용하여 37D44E7F-0339-4277-9A82-C146A944CD46을 포함한 모든 줄을 찾았습니다. 그리고 삭제하세요.
3. 프로젝트를 저장하고 다시 시작한 후 다시 컴파일하세요. 괜찮습니다.
44.Xcode 4.6으로 업그레이드한 후 arc4random_uniform을 사용할 수 없습니다
프로젝트를 Xcode4.6으로 업그레이드하면 컴파일 오류가 발생합니다:

Useof undeclared identifier 'arc4random_uniform'; did you mean 'arc4random_stir'?

SDK 6.1에서는 지원하지 않는 것 같습니다. 'arc4random_uniform', 변경 'arc4random'으로 변경한 후 문제가 해결되었습니다.
45. Xcode4.6을 업그레이드한 후 컴파일 오류가 발생했습니다: 아키텍처 x86_64에 대한 정의되지 않은 기호: "_OBJC_CLASS_$_NSMutableOrderedSet"
빌드 설정에서 "Implicitly link Objective-C Runtime Support"를 NO로 설정했는데 문제는 다음과 같습니다. 해결되었습니다.
46. Xcode4.6을 업그레이드한 후 경고가 나타납니다. 'sleep' 함수는 C99
#importf55648144b4a1c5cce7ad2f6519be0f3에서 유효하지 않습니다. Xcode4.6으로 업그레이드한 후 stdlib.h 및 unistd.h와 같은 많은 헤더 파일은 기본적으로 자동으로 가져오지 않습니다.
47. 컴파일 오류: iOS 6.0 이전 버전의 자동 레이아웃
이 문제는 Xcode 4.6에서 Target 4.0 앱을 컴파일할 때 발생합니다(실제 머신 디버깅, 기기는 3GS, iOS 6.1.3으로 업그레이드). 오류를 보고한 .xib 파일을 찾아 문서 패널에서 "UseAutolayout"(아래 그림 참조)을 비활성화합니다.

48. TitleLabel 버튼의 텍스트 정렬을 어떻게 설정하나요?
contentHorizontalAlignment 속성을 설정합니다.
emailBtn.contentHorizontalAlignment= UIControlContentHorizontalAlignmentLeft;
또는 contentEdgeInset을 사용하여 텍스트 여백을 조정합니다(0은 정렬이 없음을 의미).
emailBtn.contentEdgeInsets= UIEdgeInsetsMake(0, 10, 0, 0) ;
또는 둘 다 함께 사용하세요.
49. 오류: errorDomain=UA_ASIHTTPRequestErrorDomain Code=8 "파일을 다음에서 이동하지 못했습니다.
파일을 다운로드한 후 파일이 tmp 위치에서 캐시 위치로 성공적으로 이동되기 전에 오류가 발생합니다.
오류 파일이 임시 파일로 다운로드된 후 문서 디렉터리로 이동되기 전에 발생합니다(iExplorer를 사용하여 임시 파일의 존재를 확인할 수 있음).
이 문제를 해결하려면 "[requestsetShouldAttemptPertantConnection:NO];"를 사용하세요. 50. 컴파일 오류: "미리 컴파일된 헤더가 빌드된 이후 수정되었습니다."

헤더를 미리 컴파일할 때 파일이 수정되었습니다.
오류 실행 가능한 권한을 변경할 수 없습니다. 응용 프로그램에서
사용할 수 없습니다. iPhone에 동일한 AppID로 두 개의 응용 프로그램이 설치되어 있습니다. 이 문제는 일반적으로 Xcode에서 프로젝트-->프로필 명령을 실행할 때 발생합니다. iPhone 실제 장치 디버깅 및 프로젝트--가 실행된 후 iPhone에 프로그램을 다시 설치합니다. 두 프로그램의 AppID는 당연히 동일하므로 위의 오류가 발생합니다. 해결 방법: 먼저 프로그램을 삭제합니다. iPhone에서 Project-->Profile 명령을 실행합니다.

52. 아래와 같이 Targetfaild to run.



点击菜单栏Scheme 的左下角,选择“Edit Scheme...”,在弹出窗口左侧边栏选中“Profile xxx.app”,将其“BuildConfiguration”从“Release”修改为 “Debug”。
53、查看指针所指向的对象
如果知道地址,可以用GDB命令打印该地址所代表的对象,例如:
po 0x1fba2e20
如果该指针不是一个对象,用:
p0x1fba2e20
54、Xcode 打包时 skip install的问题
总结:在自身工程里面需要将skipinstall 设置为NO, 在引入其他静态库文件的工程中skip install 设置为YES,否则在 Orgnizer 中无法发布你的程序。
-主App是需要部署的,所以不要将Skip Install设为YES, 只需要改依赖项目。
55、错误: Pushinga navigation controller is not supported 
SDK不允许直接在一个 NavigationController 中 push 一个 NavigationController。你可以用这句代码代替:
[self.navigationControllerpushViewController:nc.topViewController animated:YES];
56、为什么当用户点击Tab bar 上的按钮,总是会显示所选 NavigationController 的 rootViewController?
你可以为TabBarController 指定一个delegate 属性,并在 delegate 对象中实现 UITabBarControllerDelegate 委托:

#pragma mark TabBarController Delegate
- (BOOL)tabBarController:(UITabBarController *)tabBarControllershouldSelectViewController:(UIViewController *)viewController {
UIViewController *tbSelectedController= tabBarController.selectedViewController;
if ([tbSelectedController isEqual:viewController]) {
return NO;
}
return YES;
}

57、使用setTitle 不能刷新 NavigationBar 的标题文本
有时候使用ViewController的 setTitle 方法并不能刷新 NavigationBar 的 title文本。极大的可能是你使用类似的代码定制了 titleView:

UILabel* label = [[[UILabel alloc] init] autorelease];
label.backgroundColor=[UIColor clearColor];
label.text = self.title;
label.font = [UIFont systemFontOfSize: 20];
……
[self.navigationItem setTitleView: label];

如果这样,你需要用同样的代码重新定制titleView,才能刷新 NavigationBar title。或者,使用默认的 TitleView 而不要去定制它。
58、 nested push animation can result in corrupted navigation bar……
如果你在代码中连续多次(两次以上)pushViewController,会出现以上信息,这既不是错误也不少警告,只是控制台输出的信息,但它会导致一些潜在的问题,比如NavigationController 的栈错误(比如用户有时候必须连按两次 backButton 才能返回上级视图)。往往还会伴随有如下信息的输出:
Unbalancedcalls to begin/end appearance transitions 945a7024ddbf9cc99e307517a118c7e1
所谓连续多次,是指至少有一次push 是不经过用户交互而直接代码调用的。例如,当用户点击一个 TableViewCell,弹出一个 ViewController,然后在这个ViewController 的 viewDidLoad 方法或 viewWillAppear 方法中用代码 Push 另一个 ViewController。这第二次push 并不是由用户动作而是由代码触发的,因此会导致上述问题。
解决办法是,在第二次push 时,将 animated 参数设置为 NO。
59、真机可以执行,模拟器不行
有时候出现模拟器不能调试的情况,程序一运行就退出,而且模拟器似乎“卡死”掉了,只出现一个黑黑的窗口,按Home键也没有作用。但是在真机上程序却可以运行。这个问题的原因未知,但有一个解决方式是:在另一个工程中打开模拟器,然后在模拟器中把有问题的程序删除即可。
60、警告“numeration not handledin switch”
新的Apple LLVM compiler 4.0中,会对 switch 变量进行检查,如果该变量为枚举类型,则需要处理所有的枚举值,你可以添加一个 default:break;语句表示所有未列举的枚举值已处理。或者将编译选项"Check switch statements"设置为NO。也可以用下列宏忽略switch 检查:

#pragmaclang diagnostic push
#pragmaclang diagnostic ignored "-Wswitch"...<switchstatment>...
#pragmaclang diagnostic pop


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


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:iOS 개발 질문 (4)다음 기사:iOS 개발 질문 (4)