我有自定义的UILabel,可以在iOS6和iOS7上正常使用.但是在iOS8上,这个标签的(void)layoutSubviews方法永远不会被调用.我用initWithFrame创建了这个标签,所以应该调用这个方法 - 并在另一个iOS版本上调用它.iOS8中的autoLayout系统会发生什么?
我在非弧项目中使用了苹果的Reachabiliry课程.当我使用仪器运行以查找内存泄漏时,它会引用Reachability方法.这是问题所在:
+ (instancetype)reachabilityWithAddress:(const struct sockaddr_in *)hostAddress;
{
SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr *)hostAddress);
WReachability* returnValue = NULL;
if (reachability != NULL)
{
returnValue = [[self alloc] init];
if (returnValue != NULL)
{
returnValue->reachabilityRef = reachability;
returnValue->localWiFiRef = NO;
}
}
return returnValue;
}
Run Code Online (Sandbox Code Playgroud)
泄漏的对象是可达性和returnValue.我知道SCNetworkReachabilityCreateWithAddress创建了一个新实例,我必须CFRelease它,但它发生在dealloc!
- (void)dealloc
{
[self stopNotifier];
if (reachabilityRef != NULL)
{
CFRelease(reachabilityRef);
}
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud)
那么我该怎么做才能避免内存泄漏呢?
UPD:可能问题在于如何调用可达性?我用这个方法:
+ (instancetype)reachabilityForInternetConnection;
{
struct sockaddr_in zeroAddress;
bzero(&zeroAddress, sizeof(zeroAddress));
zeroAddress.sin_len = sizeof(zeroAddress);
zeroAddress.sin_family = AF_INET;
return [self reachabilityWithAddress:&zeroAddress]; …Run Code Online (Sandbox Code Playgroud) 有UIView,状态栏,iOS 7和iOS 6.使用iOS 6一切都很好:我的UIView(透明,在"点击设置目的地"标签下)出现在状态栏的正下方.这是图片:

问题出在iOS 7上.这里:

我希望UIView将处于状态栏下,而不是在它之下.我已经尝试检测iOS版本,如果是7或更高版本以编程方式更改UIView框架.但我的UI在故事板中有所有限制......所以它没有帮助.我该怎么做才能解决这个问题?
UPD:也许我真的应该让设计更适合iOS7?我会考虑一下,并感谢您的推荐!
我正在尝试为自定义UIBackButtonItem留下插图(应该有图像的位置),但这种方法什么都不做.为什么?
[item setTitlePositionAdjustment:UIOffsetMake(100, 0) forBarMetrics:UIBarMetricsDefault]
Run Code Online (Sandbox Code Playgroud) 我有这个代码来获取JSON:
Alamofire.request(.GET, worlds).responseJSON { (request, response, JSON, error) in
println(JSON)
//weakSelf.serverList = JSON
}
Run Code Online (Sandbox Code Playgroud)
如何在这里申报weakSelf?我知道在我的情况下它应该是无主的,但我找不到正确的语法.当我尝试使用[unowned self] .serverList而不是注释行时,编译器显示错误"使用未解析的标识符'unowned'".我也尝试在块之前声明常量,如下所示:
unowned let uSelf = self
Run Code Online (Sandbox Code Playgroud)
它就像一个魅力,但我想了解如何在我的情况下使用[无主自我].
问题是:我有一个新的mac,需要将其设置为开发.但我的证书和配置文件保留在其他计算机上,因此我无法再从中恢复它们.
我发现了这个:https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html#//apple_ref/doc/uid/TP40012582-CH31-SW34
但是有必要撤销我的旧证书并再制作一张证书吗?如果我不是我们小组的管理员,我怎么能这样做呢?最后一个问题 - 如何处理配置文件?在我(如果需要)更改我的证书后,它应该以某种方式改变吗?
ios ×5
objective-c ×3
xcode ×2
autolayout ×1
certificate ×1
closures ×1
ios8 ×1
memory-leaks ×1
reachability ×1
swift ×1
uilabel ×1
xcode6 ×1