我正在使用XCode 8并使用iOS 10.2 Beta进行测试.
我已将Photos,PhotosUI和MobileCoreServices框架添加到项目中.
非常简单的代码:
#import <Photos/Photos.h>
#import <PhotosUI/PhotosUI.h>
#import <MobileCoreServices/MobileCoreServices.h>
@interface ViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate, PHLivePhotoViewDelegate>
@property (strong, nonatomic) IBOutlet UIImageView *imageview;
@end
Run Code Online (Sandbox Code Playgroud)
和实施:
- (IBAction)grab:(UIButton *)sender{
UIImagePickerController *picker = [[UIImagePickerController alloc]init];
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
picker.allowsEditing = NO;
picker.delegate = self;
// make sure we include Live Photos (otherwise we'll only get UIImages)
NSArray *mediaTypes = @[(NSString *)kUTTypeImage, (NSString *)kUTTypeLivePhoto];
picker.mediaTypes = mediaTypes;
// bring up the picker
[self presentViewController:picker animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
一旦我点击按钮,应用程序崩溃时出现非常无用的错误:
[access] <private>
而已.没有其他的. …
objective-c uiimagepickercontroller ios presentviewcontroller ios10
在我升级到Xcode 8之后,这是我的一个屏幕之前和之后.
我所做的只是打开我的main.storyboard,然后我在手机上构建并运行了我的应用程序.
在我的版本控制中,我可以看到Xcode正在对我的main.storyboard进行大量更改,就在我打开它之前.
每当我删除这些更改时,我都能看到我在Xcode 7.3.1中看到的内容.
但是,只要我用我的故事板重新打开界面构建器,我就会看到这些更改重新出现.
我能在这做些什么吗?
info.plist
现在需要用户权限才能访问媒体库,照片,相机和其他硬件.解决方案是将他们的密钥添加到iOS 10
用户的描述中,以便我们如何使用他们的数据,
我只能找到几把钥匙
NSPhotoLibraryUsageDescription
NSMicrophoneUsageDescription
NSCameraUsageDescription
Run Code Online (Sandbox Code Playgroud)
我想知道是否还有更多的密钥用于其他硬件,info.plist
如果你没有提供info.plist
正确的密钥描述,如果使用XCode-8 beta进行构建,你的应用程序将崩溃.
我下载了Xcode beta并打开了我现有的项目,看看它是如何与Xcode 8 beta一起工作的(我从Xcode 8打开了Storyboard文件).
现在当我从Xcode 7.3打开我的项目时,我无法打开storyboard文件,它给了我以下错误
此版本不支持以Xcode 8格式保存的文档.使用Xcode 8.0或更高版本打开此文档.
在Xcode 8中我被提示选择设备而我选择了iPhone 6S,我认为该部分是以某种方式负责在Xcode 7中打开的故事板文件
似乎在Xcode 8上viewDidLoad
,所有viewcontroller子视图都具有相同的1000x1000大小.奇怪的是,但没关系,viewDidLoad
从来没有一个正确调整视图大小的好地方.
但是viewDidLayoutSubviews
!
在我当前的项目中,我尝试打印按钮的大小:
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
NSLog(@"%@", self.myButton);
}
Run Code Online (Sandbox Code Playgroud)
日志显示myButton的大小为(1000x1000)!然后,如果我登录按钮单击,例如,日志显示正常大小.
我正在使用autolayout.
这是一个错误吗?
所以我今天收到这封邮件说我的应用程序的最新版本被iTunes Connect拒绝了,原因是一些用法描述丢失了.确切地说:
此应用程序尝试在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSContactsUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据.
此应用程序尝试在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSCalendarsUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据.
此应用程序尝试在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSPhotoLibraryUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据.
此应用程序尝试在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSBluetoothPeripheralUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据.
此应用程序尝试在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSMicrophoneUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据.
此应用程序尝试在没有使用说明的情况下访问隐私敏感数据.应用程序的Info.plist必须包含一个NSMotionUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据.
一旦纠正了这些问题,您就可以重新更新已更正的二进制文件.
我发现这些已经成为iOS 10的强制要求,但唯一的问题是我的应用程序没有请求访问这些中的任何一个的权限..我认为只有在您真正请求许可时才需要说明吗?
是因为我的一个依赖项(Cocoapods)可能包含一些代码来请求这些权限吗?或者即使我从未要求查看用户日历,联系人等,这些描述是否必须?
NSLog
Xcode 8.0 beta(8S128d)上没有打印任何内容.printf
没有改变
这是我的代码:
NSLog(@"hello from NSLog");
printf("hello from printf");
Run Code Online (Sandbox Code Playgroud)
这是iOS 9模拟器上的输出:
2016-06-17 09:49:10.887 calmapp-dev[28517:567025] hello from NSLog
hello from printf
Run Code Online (Sandbox Code Playgroud)
这是iOS 10 Simulator上的输出:
hello from printf
Run Code Online (Sandbox Code Playgroud) 2016-09-17 15:16:04.386085 appDemo[2371:94976] [] __nwlog_err_simulate_crash simulate crash already simulated **"nw_socket_set_common_sockopts setsockopt SO_NOAPNFALLBK failed: [42] Protocol not available"**
2016-09-17 15:16:04.386676 appDemo[2371:94976] [] nw_socket_set_common_sockopts setsockopt SO_NOAPNFALLBK failed: [42] Protocol not available, dumping backtrace:
[x86_64] libnetcore-856.1.8
0 libsystem_network.dylib 0x0000000112dc780e __nw_create_backtrace_string + 123
1 libnetwork.dylib 0x0000000113bfa194 nw_socket_add_input_handler + 3002
2 libnetwork.dylib 0x0000000113bd7db8 nw_endpoint_flow_attach_protocols + 3768
3 libnetwork.dylib 0x0000000113bd6dd5 nw_endpoint_flow_setup_socket + 563
4 libnetwork.dylib 0x0000000113bd5b34 -[NWConcrete_nw_endpoint_flow startWithHandler:] + 2612
5 libnetwork.dylib 0x0000000113bf0d11 nw_endpoint_handler_path_change + 1261
6 libnetwork.dylib 0x0000000113bf0740 nw_endpoint_handler_start + 570
7 libdispatch.dylib 0x0000000112b44980 _dispatch_call_block_and_release …
Run Code Online (Sandbox Code Playgroud) 我正在使用AutoLayout和Size类,但随着iOS 10和新Xcode 8.0的发布,有一个新选项Vary for Traits
.这是替换尺寸Classe不同的宽度和高度的设备.
通过选择width
复选框,它会显示varying 14 compact width devices
.
通过选择height
复选框,它会显示varying 18 compact height devices
.
通过选择两个复选框,它将显示varying 11 compact width regular height devices
.
如何利用这个选项?我们可以像使用Xcode7.0一样使用大小类的AutoLayout吗?如果任何人有深入的知识,那么请解释一下.
我今天已将我的Xcode 8更新为beta 2,并且我正在尝试在App和Today Extension之间共享数据.我正面对这个日志警告:
2016-07-08 18:00:24.732472 ProjetctX [941:42801] [用户默认值]无法读取CFPrefsPlistSource <0x1700f1280>中的值(域:group.xpto,用户:kCFPreferencesAnyUser,ByHost:是,容器:(null)) :将kCFPreferencesAnyUser与容器一起使用仅允许System Containers与cfprefsd分离
有人可以帮帮我吗?
ios10 ×10
ios ×9
xcode8 ×5
xcode ×4
objective-c ×3
autolayout ×2
nslog ×1
plist ×1
storyboard ×1
xcode8.2 ×1