使用Xcode 6.3,引入了新的注释,以便更好地表达Objective-C中API的意图(并确保更好的Swift支持).那些注释当然是nonnull,nullable和null_unspecified.
但是使用Xcode 7,会出现很多警告,例如:
指针缺少可为空类型说明符(_Nonnull,_Nullable或_Null_unspecified).
除此之外,Apple使用另一种类型的可为空性说明符,标记其C代码(源代码):
CFArrayRef __nonnull CFArrayCreate(?CFAllocatorRef __nullable allocator, const void * __nonnull * __nullable values, CFIndex numValues, const CFArrayCallBacks * __nullable callBacks);
总而言之,我们现在拥有这3种不同的可空性注释:
nonnull,nullable,null_unspecified_Nonnull,_Nullable,_Null_unspecified__nonnull,__nullable,__null_unspecified即使我知道为什么以及在哪里使用哪个注释,我也会对我应该使用哪种类型的注释,在哪里以及为什么感到困惑.这是我可以收集的:
nonnull,nullable,null_unspecified.nonnull,nullable,null_unspecified.__nonnull,__nullable,__null_unspecified._Nonnull,_Nullable,_Null_unspecified. …要将应用程序分发给我们的测试人员,我们使用Xcode,我们使用以下过程:
但是使用Xcode 6,这个工作流程发生了一些变化.我仍然可以选择Ad-Hoc分发选项,但我无法选择我想要的配置文件.这使我们无法控制使用哪个签名证书和配置文件配置(我们使用推送通知).
默认情况下,使用iPhone distribution签名身份并XC Ad Hoc生成某种配置配置文件,如下图所示:
如果单击配置配置文件附近的箭头,则会打开包含配置配置文件的文件夹.
所以我的问题是:
Xcode 6中是否有任何方法可以选择Ad Hoc分发使用的配置文件?
谢谢!
在iOS 7中,创建了一个新的推送动画,它将推动的视图控制器滑动到层次结构的顶部.但是当动画发生时,iOS显然会做两件事来修改顶视图控制器的设计:
添加阴影:

底部视图控制器上有一个灯罩:

在大多数应用中,这不是问题.但是,我目前正在开发一个像素完美设计的应用程序,我使用具有清晰背景的视图控制器.但是此功能保持不变,并且灯光覆盖显示在视图控制器上.因为背景是白色渐变,所以这个光覆盖(在屏幕截图2上)是非常明显的,并且当动画完成时,它被移除而没有动画,这使得它非常明显和烦人.
我知道我可以创建自定义动画和过渡,但我想知道:
有没有办法删除(或修改)这个光覆盖和阴影,而不必创建自定义过渡?
谢谢您的帮助.
我有一个iOS应用程序,可以播放不同的音频效果并同时录制音频.该应用程序的目的目前并不重要,但我有iOS音频效果的问题.
要播放的效果,我用SimpleAudioEngine的CocosDenshionAPI(使用AVAudioPlayer,据我可以看到).效果是预加载的,它们工作正常(我实际上在按钮上滚动,滚动和类似).使用以下代码播放效果:
在willFinishLaunchingWithOptions方法中:
[[SimpleAudioEngine sharedEngine] preloadEffect:@"sound.wav"];
Run Code Online (Sandbox Code Playgroud)
在其他方法中,需要播放时:
[[SimpleAudioEngine sharedEngine] playEffect:@"sound.wav"];
Run Code Online (Sandbox Code Playgroud)
这里没有奇迹,但与此同时,我正在用内置麦克风录制噪音AVCaptureSession.捕获会话代码来自Web上的示例之一.
AVCaptureDevice *audioDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];
captureSession = [[AVCaptureSession alloc] init];
NSError *error = nil;
captureAudioDeviceInput = [AVCaptureDeviceInput deviceInputWithDevice:audioDevice error:&error];
if ([captureSession canAddInput: captureAudioDeviceInput])
{
[captureSession addInput:captureAudioDeviceInput];
}
captureAudioDataOutput = [AVCaptureAudioDataOutput new];
if ([captureSession canAddOutput:captureAudioDataOutput])
{
[captureSession addOutput:captureAudioDataOutput];
}
// Create a serial dispatch queue and set it on the AVCaptureAudioDataOutput object
dispatch_queue_t audioDataOutputQueue = dispatch_queue_create("AudioDataOutputQueue", DISPATCH_QUEUE_SERIAL);
[captureAudioDataOutput setSampleBufferDelegate:self queue:audioDataOutputQueue]; …Run Code Online (Sandbox Code Playgroud) 我正在尝试iOS SDK,我有以下UIView结构:
UIView
UIImageView - 只有背景图片UIImageView(带CALayer面具)UIScrollView
Label结构非常简单,UIScrollView是透明层,第二层UIImageView有遮罩.我想要做的是CALayer掩码会根据滚动视图中内容的位置移动它的位置.如果用户滚动,则应更新蒙版的位置.我已经通过使用UIScrollView's委托解决了这个问题:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGPoint contentOffset = scrollView.contentOffset;
contentOffset.y = -contentOffset.y;
self.overlayImageView.viewlayer.mask.position = contentOffset;
}
Run Code Online (Sandbox Code Playgroud)
掩码viewDidLoad在视图控制器的生命周期中创建并且不会更改.
问题是掩模位置更新太慢.这样看起来掩码跟随滚动视图的内容,而不是滚动它.该scrollViewDidScroll委托方法正确调用.
为了更好地理解这个问题,我附上了我在iOS模拟器中制作的视频. http://www.youtube.com/watch?v=w3xRl3LTngY
所以问题是:
有没有办法让面具更新更快,或者这是iOS的限制?
我有一个UI元素(UISwitch实际上,但实际上并不重要),它将前导和尾随空间固定到Interface Builder中的superview.Xcode 6中的约束如下所示:

领先空间的约束是有效的.约束的值是42.0分.
这正是我想要的,因为对于不同的设备,我可以更改layoutMargins属性UIView并且约束将正常工作,以增加视图之间的边距.
现在我想在代码中添加另一个视图,该视图也会将前导和尾随空间固定到它的超级视图边距,因此相同的layoutMargins设置到superview将起作用.
我使用可视格式语言使用以下语法固定视图:
NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"|-42.0-[separatorView]-42.0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(self.contentView, separatorView)];
[self.contentView addConstraints:constraints];
[self.contentView setNeedsUpdateConstraints];
Run Code Online (Sandbox Code Playgroud)
这是有效的,但layoutMargins属性使用此约束无效,因此它显然不是固定到边距,而是直接固定到superview.
所以我的问题是:
如何使用可视化格式语言将UI元素空间固定到代码中?或者,如果不可能,如何使用constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:API?
谢谢!
我有一个为iOS 7构建的项目,它到目前为止工作正常,但在Git合并后,一些设置或某些东西被破坏,异常不再输出到控制台.因此,控制台中永远不会显示"因未捕获的异常而终止应用程序"错误消息.我在设备和模拟器上都尝试过这个项目,同样的事情.我找不到这个原因以及如何修复它,我谦卑地请求你的帮助.
事实:
在寻求帮助之前我曾尝试过什么?
我还可以做些什么?谢谢您的帮助!
我正在尝试将Crashlytics应用到我当前的iOS应用程序中,但Crashlytics在初始化SDK后没有进一步发展.每个应用程序之前工作正常,但现在它没有.
你能告诉我,这有什么问题吗?每行代码都在我的应用程序中.我做了同样的步骤但没有发生任何事情.
谢谢.
我正在开发一个不适用于App Store的应用程序,因此我可以使用私有API.
我想要完成的是获取每个特定应用程序的数据信息计数器 - 如果可能的话,单独用于WIFI和蜂窝网络使用.
我假设可能有一些API,因为Apple在设置>手机>"使用手机数据"和"设置">"常规">"使用"中进行了此操作.我一直在阅读标题,但这是一个非常漫长的过程.
有谁知道哪个私有API允许此功能?否则,这些数据会在物理上存储在设备上,以便我可以访问它?
我在物理设备上运行单元测试目标时遇到问题(在我的情况下,带有iOS 8.1的iPhone 6).为此,我创建了一个全新的iOS Xcode项目,打开它并使用Cmd + U(产品 - >测试)运行测试.该应用程序成功编译并询问我的代码签名凭据.该应用程序甚至在设备上打开了.一切都很好,直到这一部分.
但测试永远不会运行,Xcode会在"测试"中停留几分钟,然后最终退出:
*** Canceling tests due to timeout in Waiting for test process to check in...
Run Code Online (Sandbox Code Playgroud)
控制台抛出一些代码签名错误或类似错误:
2014-10-30 08:54:12.585 Test[4721:1298810] Error loading /private/var/mobile/Containers/Data/Application/B727E18E-48BC-4A7E-BDBA-19157ED5A4AC/tmp/TestTests.xctest/TestTests:
dlopen(/private/var/mobile/Containers/Data/Application/B727E18E-48BC-4A7E-BDBA-19157ED5A4AC/tmp/TestTests.xctest/TestTests, 262): no suitable image found.
Did find: /private/var/mobile/Containers/Data/Application/B727E18E-48BC-4A7E-BDBA-19157ED5A4AC/tmp/TestTests.xctest/TestTests:
code signature invalid for '/private/var/mobile/Containers/Data/Application/B727E18E-48BC-4A7E-BDBA-19157ED5A4AC/tmp/TestTests.xctest/TestTests'
DevToolsBundleInjection: Error loading bundle '/private/var/mobile/Containers/Data/Application/B727E18E-48BC-4A7E-BDBA-19157ED5A4AC/tmp/TestTests.xctest'
Run Code Online (Sandbox Code Playgroud)
我真的没有得到它,应用程序正确签名,但我猜测注入的测试库不是.
任何人都知道如何解决这个问题?或者这是否意味着我们仅限于在模拟器中进行测试?
我一直在测试它的项目可以在我的GitHub上找到:https://github.com/Legoless/StackOverflow/tree/master/Objective-C/TestTargetFailure
谢谢.
ios ×9
ios8 ×3
iphone ×2
objective-c ×2
xcode ×2
xcode6 ×2
animation ×1
audio ×1
autolayout ×1
crashlytics ×1
keyboard ×1
nullable ×1
uiimage ×1
uiview ×1
unit-testing ×1
xcode5 ×1