相关疑难解决方法(0)

原子和非原子属性之间有什么区别?

财产申报中的含义atomic和nonatomic含义是什么?

@property(nonatomic, retain) UITextField *userName;
@property(atomic, retain) UITextField *userName;
@property(retain) UITextField *userName;
Run Code Online (Sandbox Code Playgroud)

这三者之间的运作区别是什么?

properties atomic objective-c ios nonatomic

1828
推荐指数
20
解决办法
47万
查看次数

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

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

objective-c automatic-ref-counting declared-property

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

(非原子的,强大的)财产的生命周期如何在iOS中发挥作用?

假设我有一个声明为:@property (nonatomic, strong) NSArray *menuArr; OR 的属性@property (strong) NSArray *menuArr;并设置此属性viewDidLoad.设备"记住"我存储在阵列中的信息需要多长时间?

该属性在viewController中声明并设置,该viewController嵌入在navigationViewController中,该控件本身是TabBarViewController中的第一个视图控制器.换句话说,它是用户看到的第一个视图,然后它们可以远离它并返回.

没有进入关于原子与非原子的辩论我的问题是这个

属性(以任何方式声明)是否在iOS环境中无限生存,或者其寿命受限于诸如时间,其他地方的内存使用,关闭设备等因素


为了避免这是一个"xy问题",这就是为什么我要问:

我正在开发一个应用程序,其中包括分为多个类别的菜单,每个类别中包含多个项目......正如您可能期望的菜单一样.所有菜单项都存储在parse.com上.起初我在每个页面上做一个单独的PFQuery,一个在类别页面上获取类别,当用户选择一个类别时,推送一个新页面,第二个PFQuery获得所选类别中的所有项目.这有效但页面加载需要相当长的时间,有时可能需要10-15秒而且没有真正表明应用程序还没有冻结.

为了解决这个问题,我决定在加载应用程序的第一个视图时运行一个PFQuery,以viewDidLoad获取所有菜单项并将自己排序为包含项目的类别的嵌套数组.然后我将菜单数组存储在viewController的属性中.后来,当我进入菜单时,我有以下内容viewDidLoad:

//get e reference to the first view controller, the one that has the menu array 
FirstViewController *myVC1ref = (FirstViewController *)[[[self.navigationController.tabBarController.viewControllers objectAtIndex:0] viewControllers]  objectAtIndex:0];

//set thisviewController's `menuArr` property to point to the menuArr on the first viewController.

_menuArr=myVC1ref.menuArr;
Run Code Online (Sandbox Code Playgroud)

我的理解是,这会创建一个指向原始数组的指针,并不会实际创建第二个数组(如果我错了,请纠正我).

此方法需要大约10-15秒来加载和排序一次数组,但之后页面之间的导航是在此之后立即更好.

我计划在某些地方进行查询以查看是否有任何菜单项已更改,如果是,则重新下载并对菜单进行排序.

到目前为止,在我的测试中,应用程序似乎记得阵列中的信息一整天都很好,正常无关的手机使用情况但是必须有一些限制吗?

arrays properties objective-c ios pfquery

2
推荐指数
1
解决办法
562
查看次数