作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些在 xcode 4.6 中运行良好的代码。因为我升级到 xcode 5 一个部分无法正常工作。它没有出错。非常奇怪的是,未经修改的完全相同的代码可以在模拟器中工作,但不能在设备上工作。如果我在 xcode 4.6 中编译相同的 coe,它确实可以在设备和模拟器上工作。
它使用数百万可达性类。
我已经找到了这个问题,但是因为它可以在 xcode 5 中的模拟器上运行,我不明白。
基本上在一个按钮上单击我检查可达性。
我有一个指向可达性对象的弱指针,我在按钮单击时设置它 - 下面的片段
@interface settingsViewController ()
@property (weak,nonatomic) Reachability *reachable;
@end
//called on click
/ Checks if we have an internet connection or not
- (void)testInternetConnection
{
self.reachable= [Reachability reachabilityWithHostname:@"www.google.com"];
if (self.reachable)
{
NSLog(@"reachability created");
}
else
{
NSLog(@"NO OBJECT");
}
//do more stuff.....
}
#pragma mark - class constructor methods
+(Reachability*)reachabilityWithHostname:(NSString*)hostname
{
SCNetworkReachabilityRef ref = SCNetworkReachabilityCreateWithName(NULL, [hostname UTF8String]);
NSLog(@"init1");
if (ref)
{
NSLog(@"init2");
id reachability = [[self alloc] initWithReachabilityRef:ref];
#if __has_feature(objc_arc)
NSLog(@"init with arc");
return reachability;
#else
NSLog(@"init no arc");
return [reachability autorelease];
#endif
}
NSLog(@"cannot init");
return nil;
}
最佳答案
您发布的代码永远不会起作用。
它确实在模拟器上工作的事实是模拟器不完美的产物,而不是反射(reflect)它应该工作。
编译器应该给你一个警告,创建一个对象并将它保存到一个弱指针,它将立即被释放。这就是 ARC 的工作原理。
使用局部强变量。一旦强变量超出范围,将由调用者决定是否应该保留对该对象的强引用。
关于ios - 弱指针与强指针在 xcode 5 中的行为略有不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19570085/
直接问题:对于一个类对象的三个(或更多)几乎相同的拷贝,我怎样才能最好(或最有效)地存储它们之间的差异? 背景:我有一个需要一组参数的算法: struct params { std::strin
我是一名优秀的程序员,十分优秀!