我在我的项目中成功使用ARC.但是,我遇到了一些文件(例如,在单元测试和模拟对象中),其中ARC的规则现在更加脆弱.我记得听说有一种方法可以在每个文件的基础上禁用ARC,但我无法找到这个选项.
这可能吗?如何基于每个文件禁用ARC?
xcode objective-c automatic-ref-counting manual-retain-release
ARC编译器收到以下警告:
"performSelector may cause a leak because its selector is unknown".
这是我正在做的事情:
[_controller performSelector:NSSelectorFromString(@"someMethod")];
为什么我会收到此警告?我理解编译器无法检查选择器是否存在,但为什么会导致泄漏?我怎样才能更改我的代码,以便我不再收到此警告?
我正在使用ARC专门为iOS 5开发.应该IBOutlets UIView(和子类)是strong或weak?
下列:
@property (nonatomic, weak) IBOutlet UIButton *button;
将摆脱所有这一切:
- (void)viewDidUnload
{
    // ...
    self.button = nil;
    // ...
}
这样做有什么问题吗?模板正在使用strong,当从"Interface Builder"编辑器直接连接到标题时创建的自动生成属性,但为什么?在UIViewController已经有一个strong到其基准view保留其子视图.
cocoa-touch objective-c interface-builder ios automatic-ref-counting
在WWDC 2014会议403 中级Swift和成绩单中,有以下幻灯片

在这种情况下,发言人说,如果我们不在[unowned self]那里使用,那将是内存泄漏.这是否意味着我们应该始终使用[unowned self]内部封闭?
在Swift Weather应用程序的ViewController.swift的第64行,我不使用[unowned self].但我通过使用一些@IBOutlet像self.temperature和更新UI self.loadingIndicator.它可能没问题,因为@IBOutlet我所定义的都是weak.但为了安全起见,我们应该一直使用[unowned self]吗?
class TempNotifier {
  var onChange: (Int) -> Void = {_ in }
  var currentTemp = 72
  init() {
    onChange = { [unowned self] temp in
      self.currentTemp = temp
    }
  }
}
有由ARC推出性能的两种新的内存管理的属性,strong和weak.
除了copy显然是完全不同的东西之外,vs 和vs 之间有什么区别吗?strongretainweakassign
根据我的理解,这里唯一的区别是weak将分配nil给指针,而assign不会,这意味着程序将在指针释放后向指针发送消息时崩溃.但是,如果我使用weak,这将永远不会发生,因为发送消息nil不会做任何事情.
我不知道strong和之间有什么不同retain.
是否有任何理由为什么我应该使用assign,并retain在新的项目,或者是那种被弃用?
是否可以使用标准属性语法将块作为属性?
ARC有什么变化吗?
在ARC下的单例的共享实例访问器中使用dispatch_once的确切原因是什么?
+ (MyClass *)sharedInstance
{
    //  Static local predicate must be initialized to 0
    static MyClass *sharedInstance = nil;
    static dispatch_once_t onceToken = 0;
    dispatch_once(&onceToken, ^{
        sharedInstance = [[MyClass alloc] init];
        // Do any other initialisation stuff here
    });
    return sharedInstance;
}
在后台异步实例化单例不是一个坏主意吗?我的意思是如果我请求共享实例并立即依赖它会发生什么,但dispatch_once要到圣诞节才能创建我的对象?它不会马上回来吗?至少这似乎是Grand Central Dispatch的重点.
那他们为什么要这样做呢?
有人能详细解释给我时,我必须使用各个属性:nonatomic,copy,strong,weak,等,为申报财产,并解释每个做什么?某种例子也会很棒.我正在使用ARC.
将项目转换为使用ARC时,"切换案例是否在受保护的范围内"是什么意思?我正在转换一个项目使用ARC,使用Xcode 4编辑 - >重构 - >转换为Objective-C ARC ...我得到的一个错误是"切换案例在受保护的范围内"的"部分"交换机开关盒.
编辑,这是代码:
ERROR标记在"默认"情况下:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"";
    UITableViewCell *cell ;
    switch (tableView.tag) {
        case 1:
            CellIdentifier = @"CellAuthor";
            cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
            if (cell == nil) {
                cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        }
        cell.textLabel.text = [[prefQueries objectAtIndex:[indexPath row]] valueForKey:@"queryString"];
        break;
    case 2:
        CellIdentifier = @"CellJournal";
        cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        }
        cell.textLabel.text = [[prefJournals …我目前正在使用iOS 5 SDK试图开发我的应用程序.我正在尝试将NSString作为一个属性,然后在.m文件中合成它(之前我已经完成了这个,没有任何问题).现在,我遇到了这个问题:"语义问题:属性的合成getter遵循Cocoa命名约定来返回'拥有'对象."
这是我的代码:.h
@interface ViewController : UIViewController {
     NSString *newTitle;
}
@property (strong, nonatomic) NSString *newTitle;
.M
@synthesize newTitle;
有没有人知道如何解决这个问题?谢谢!!
variables properties objective-c ios5 automatic-ref-counting
objective-c ×9
ios ×6
ios5 ×2
properties ×2
xcode ×2
cocoa-touch ×1
memory-leaks ×1
singleton ×1
swift ×1
variables ×1