다크호스 프로그래머 - autorelease 및 Block
/* 1.autorelease의 기본 사용법 1은 대상을 자동 방출 탱크에 넣는다 2는 자동 방출 탱크를 소각할 때 탱크의 모든 대상에 대해release 조작 3을 한 번 한다. 대상 자체를 되돌려준다 4는 autorelease 방법을 호출한 후 대상 계수기는 변하지 않는다
2. autorelease의 장점 1'대상이 방출되는 시간에 관심이 없다 2'release를 언제 호출할지 관심이 없다
3. autorelease의 경우 주의1>메모리가 비교적 큰 대상을 함부로 사용하지 마십시오2>메모리가 비교적 작은 대상을 autorelease로 사용하면 큰 영향을 주지 않습니다
4. 오류 쓰기 1'alloc 이후 autorelease 호출, release 호출
@autoreleasepool
{
Person *p = [[[Person alloc] init] autoreleasepool];
[p release];
}
2> 여러 번 autorelease 호출
@autoreleasepool
{
Person *p = [[[[Person alloc] init] autoreleasepool] autoreleasepool];
}
5. 자동 풀링 1은 iOS 프로그램을 실행하는 동안 수많은 풀을 생성합니다.이 연못들은 창고 구조로 존재한다(선진후출)2
6. 자동 풀링 방식 1 iOS 5.0 이전
NSAutoreleasepool *pool = [[NSAutoreleasepool alloc] init];
[pool release]; [pool drain];
#시스템이 자체적으로 가지고 있는 방법에는alloc,new,copy가 포함되어 있지 않다. 되돌아오는 대상은 모두 autorelease라는 것을 의미한다. #개발에서 자주 클래스 방법을 제공한다. 이미 autorelease가 만들어진 대상을 신속하게 만들 때 클래스 이름을 직접 사용하지 말고 일반적으로self를 사용한다.
+ (id)person
{
return [[[self alloc]init] autorelease];
}
#import
@interface Person : NSObject
@property (nonatomic, assign) int age;
+ (id)person;
@end
@implementation Person
+(id)person
{
return [[[Person alloc] init] autorelease];
}
- (void)dealloc;
{
NSLog("@%d ", _age);
[super dealloc];
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool
{
Person *p1 = [Person person];
p.age = 100;
}
return 0;
}
Block의 소개: 1. Block은 코드를 봉하여 언제든지 2. Block은 가장 함수 매개 변수나 함수의 반환 값을 실행할 수 있고 그 자체는 입력 매개 변수나 반환 값을 가져올 수 있다. 3. 애플 정부는 Block을 최대한 많이 사용하라고 제안했다.다중 루틴, 비동기 작업, 집합 반복, 집합 정렬, 애니메이션 전환에 사용되는 많은 Block이 파악해야 할 것들 1
int (^sumBlock)(int, int);
void (^myblock)();
2>Block 봉인 코드를 어떻게 활용
^(int a, int b)
{
return a - b;
};
^()
{
NSLog(@"-----");
}
3. Block 액세스 바깥 변수 * Block 내부 액세스 바깥 변수 * 기본적으로 Block 내부 액세스 바깥 변수 수정 불가 * 국부 변수에Block 키워드, 이 부분 변수는 Block 내부에서 수정할 수 있습니다
4. typedef를 이용하여 Block 유형 정의
#import
// Myblock
typedef int (^Myblock)(int, int);
int main(int argc, const char * argv[])
{
int (^sumblock)(int, int) = ^(int a, int b)
{
return a + b;
};
int c = sumblock(10, 11);
//typedef
//Myblock sumBlock;
//sumblock = ^(int a , int b)
//{
// return a + b;
//}
void (^lineBlock)(int) = ^(int n)
{
for (int i = 0; iNSLog(@"----------");
}
};
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.