iOS错误总结 “instance variable '******' accessed in class method”以及“autoreleasepool的用处"

原创 2015年11月17日 17:30:04

1,instance variable '******' accessed in class method

比如:

@interface MyClass : NSObject{
 		   int number;
	}
	+(void) printNumber;
	@end
	 MyClass
	+(void) printNumber
	{
    		number =10;
   		NSLog(@"%d",number);
	}
	@end

此时发生错误,不能运行,

而原因则是


instance variable '******' accessed in class method

实例变量名'*******‘ 在一个“类方法”(+号方法)里被使用。

这是因为静态方法访问了非静态属性(.h声明的那些属性)即这个方法是加号方法却使用了变量

类方法(即加号开头的方法)不可以使用实例变量也就是说在加号开头的方法里面不可以使用实例变量

修改方法:只要把类方法变成实例方法即可,也就是把加号改成减号即可

2.这段代码是错误的, 

int largenumber = 1000000000;
	for(int i=0;i<largenumber;i++){
     	 	  Person * p = [Person person];
     	   	  [p study];
	}
原因即正确改法为:

因为便利构造器产生的对象如果没有autoreleasepool的话是无法释放的,所以当循环数值过大时,产生的对象会越来越多而且使用过的对象无法释放,内存占用越来越大,严重影响性能.所以要在for循环中使用autoreleasepool,即                    

<span style="color:#006600;">int largenumber = 1000000000;
	for(int i=0;i<largenumber;i++){
		@autoreleasepool{
     	 	 	 Person * p = [Person person];
     	   	  	[p study];
		}
	}</span>





版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

IOS常见的错误大全

//读取数据库数据 -(void)movethesqlitefile{ NSString *sourcepath=[[NSBundle mainBundle]pathForResource:@"...

instance variable 'name' accessed in class method

instance variable 'name' accessed in class method 实例变量名'name‘ 在一个“类方法”(+号方法)里被使用。 原因:静态方法访问了非静态属性(...

Cannot refer to a non-final variable response inside an inner class defined in a different method

内部类中调用外部类的局部变量。若是没有final的话就会出现报错: 匿名内部类不能访问外部类方法中的局部变量,除非该变量被声明为final类型   1. 这里所...

Cannot refer to a non-final variable mylis inside an inner class defined in a different method

今天测试jedis的发布订阅模式的时候偶然碰到这样的问题,匿名内部类不能引用外部类中非final类型的变量。 查了下看到有人说原因如下: 局部匿名类在源代码编译后也是要生成对应的class文...

[Ruby笔记]28.Ruby @@class_variables 类变量 vs @instance_variable 实例变量

@@class_variablesTestCase 想象这样一个场景,一次小班授课,参加的学生有A B C 三人 ,这时候老师开始提问了,我们使用类Student 记录 : 到场的学生名单; 每人...

Model Class Method Instance Variables

=begin # 这章主要是说下ruby的model 类 方法 实例变量 Ruby语言中,任何的事物都是对象(Object),包含:模块(Model)、类(Class)、方法(Method)、实例...

Cannot refer to a non-final variable i inside an inner class defined in a differ

涉及到闭包(closure)的概念。   不同语言对闭包选择了不同的支持,相比之下,C#中就能够在匿名函数中引用非final的外部变量,例如这篇帖子中提到的C#代码: Java代码  L...

Using Class of Secure Transport (COST) to Restrict Instance Registration in Oracle RAC (Doc ID 13408

Applies to: Oracle Net Services - Version 10.2.0.3 to 11.2.0.4 [Release 10.2 to 11.2] Information...

JNI DETECTED ERROR IN APPLICATION: can't call void XXX on instance of java.lang.Class <XXX>解决方案

最近在做一个JNI项目———C回调Java代码的地方出现了如下一个错误:JNI DETECTED ERROR IN APPLICATION: can't call void com.crycheck....

ssh整合An AnnotationConfiguration instance is required to use <mapping class="“错误解决方法

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFacto...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)