标签: automatic-ref-counting

如何为项目中的单个文件禁用ARC?

我在我的项目中成功使用ARC.但是,我遇到了一些文件(例如,在单元测试和模拟对象中),其中ARC的规则现在更加脆弱.我记得听说有一种方法可以在每个文件的基础上禁用ARC,但我无法找到这个选项.

这可能吗?如何基于每个文件禁用ARC?

xcode objective-c automatic-ref-counting manual-retain-release

1332
推荐指数
14
解决办法
33万
查看次数

performSelector可能导致泄漏,因为其选择器未知

ARC编译器收到以下警告:

"performSelector may cause a leak because its selector is unknown".
Run Code Online (Sandbox Code Playgroud)

这是我正在做的事情:

[_controller performSelector:NSSelectorFromString(@"someMethod")];
Run Code Online (Sandbox Code Playgroud)

为什么我会收到此警告?我理解编译器无法检查选择器是否存在,但为什么会导致泄漏?我怎样才能更改我的代码,以便我不再收到此警告?

memory-leaks objective-c ios automatic-ref-counting

1251
推荐指数
15
解决办法
18万
查看次数

如果IBOutlets在ARC下是强还是弱?

我正在使用ARC专门为iOS 5开发.应该IBOutlets UIView(和子类)是strongweak

下列:

@property (nonatomic, weak) IBOutlet UIButton *button;
Run Code Online (Sandbox Code Playgroud)

将摆脱所有这一切:

- (void)viewDidUnload
{
    // ...
    self.button = nil;
    // ...
}
Run Code Online (Sandbox Code Playgroud)

这样做有什么问题吗?模板正在使用strong,当从"Interface Builder"编辑器直接连接到标题时创建的自动生成属性,但为什么?在UIViewController已经有一个strong到其基准view保留其子视图.

cocoa-touch objective-c interface-builder ios automatic-ref-counting

542
推荐指数
10
解决办法
12万
查看次数

我们总是在Swift中使用[unowned self]内部封闭

在WWDC 2014会议403 中级Swift成绩单中,有以下幻灯片

在此输入图像描述

在这种情况下,发言人说,如果我们不在[unowned self]那里使用,那将是内存泄漏.这是否意味着我们应该始终使用[unowned self]内部封闭?

Swift Weather应用程序的ViewController.swift的第64行,我不使用[unowned self].但我通过使用一些@IBOutletself.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
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

ios automatic-ref-counting swift

455
推荐指数
7
解决办法
14万
查看次数

Objective-C ARC:强大vs保留和弱vs分配

有由ARC推出性能的两种新的内存管理的属性,strongweak.

除了copy显然是完全不同的东西之外,vs vs 之间有什么区别吗?strongretainweakassign

根据我的理解,这里唯一的区别是weak将分配nil给指针,而assign不会,这意味着程序将在指针释放后向指针发送消息时崩溃.但是,如果我使用weak,这将永远不会发生,因为发送消息nil不会做任何事情.

我不知道strong和之间有什么不同retain.

是否有任何理由为什么我应该使用assign,并retain在新的项目,或者是那种被弃用?

properties objective-c ios ios5 automatic-ref-counting

365
推荐指数
6
解决办法
19万
查看次数

我可以使用Objective-C块作为属性吗?

是否可以使用标准属性语法将块作为属性?

ARC有什么变化吗?

objective-c ios objective-c-blocks automatic-ref-counting

319
推荐指数
6
解决办法
11万
查看次数

为什么Apple建议使用dispatch_once在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;
}
Run Code Online (Sandbox Code Playgroud)

在后台异步实例化单例不是一个坏主意吗?我的意思是如果我请求共享实例并立即依赖它会发生什么,但dispatch_once要到圣诞节才能创建我的对象?它不会马上回来吗?至少这似乎是Grand Central Dispatch的重点.

那他们为什么要这样做呢?

singleton objective-c ios automatic-ref-counting

303
推荐指数
2
解决办法
8万
查看次数

Objective-C声明@property属性(非原子,复制,强,弱)

有人能详细解释给我时,我必须使用各个属性:nonatomic,copy,strong,weak,等,为申报财产,并解释每个做什么?某种例子也会很棒.我正在使用ARC.

objective-c automatic-ref-counting declared-property

288
推荐指数
4
解决办法
16万
查看次数

将项目转换为使用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 …
Run Code Online (Sandbox Code Playgroud)

xcode objective-c automatic-ref-counting

283
推荐指数
4
解决办法
7万
查看次数

语义问题:属性的合成getter遵循Cocoa命名约定来返回'拥有'对象

我目前正在使用iOS 5 SDK试图开发我的应用程序.我正在尝试将NSString作为一个属性,然后在.m文件中合成它(之前我已经完成了这个,没有任何问题).现在,我遇到了这个问题:"语义问题:属性的合成getter遵循Cocoa命名约定来返回'拥有'对象."

这是我的代码:.h

@interface ViewController : UIViewController {
     NSString *newTitle;
}
@property (strong, nonatomic) NSString *newTitle;
Run Code Online (Sandbox Code Playgroud)

.M

@synthesize newTitle;
Run Code Online (Sandbox Code Playgroud)

有没有人知道如何解决这个问题?谢谢!!

variables properties objective-c ios5 automatic-ref-counting

282
推荐指数
5
解决办法
8万
查看次数