08일차 OC 언어(21): 단일 예제 ARC 및 MRC 쓰기
수독: 이 문장을 다 보고 나서 당신은 무엇을 할 수 있습니까?
ARC 및 MRC 의 단일 인스턴스 작업 처리
학습 전: 당신은 반드시 무엇을 할 줄 알아야 합니까?(이곳에서 나는 이미 네가 C 언어의 기초를 갖추고 있다는 것을 묵인했다)
ARC란, MRC란?
노트
、
1.
2. copy,mutableCopy
3.MRC retain、release、retainCount
코드
main.m
#pragma mark 21- ARC MRC
#pragma mark -
#import
#pragma mark
#import "Tools.h"
#pragma mark - main
int main(int argc, const char * argv[])
{
/*
//
//
Tools *t1 = [[Tools alloc]init]; // allocWithZone
Tools *t2 = [Tools new];
Tools *t3 = [Tools shareInstance];
Tools *t4 = [Tools copy];
Tools *t5 = [Tools mutableCopy];
NSLog(@"%p,%p,%p,%p,%p",t1,t2,t3,t4,t5);
*/
Tools *t = [[Tools alloc]init];
[t retain];
[t retain];
[t retain];
NSLog(@"t = %p",t);
NSLog(@"retainCount = %lu",[t retainCount]);
[t release];
Tools *t1 = [Tools shareInstance];
NSLog(@"t1 = %p",t1);
NSLog(@"retainCount = %lu",[t1 retainCount]);
[t1 release];
return 0;
}
Person
>>>.h
#import
@interface Tools : NSObject
//
// share , default
+ (instancetype)shareInstance;
@end
>>>.m
#import "Tools.h"
@implementation Tools
+ (instancetype)shareInstance
{
Tools *instance = [[self alloc]init];
return instance;
}
static Tools *_instance = nil;
+ (instancetype)allocWithZone:(struct _NSZone *)zone
{
#pragma 1.
/*
NSLog(@"%s",__func__);
// ,
if (_instance == nil) {
NSLog(@" ");
_instance = [super allocWithZone:zone];
}
return _instance;
*/
//
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_instance = [super allocWithZone:zone];
});
return _instance;
}
- (id)copyWithZone:(NSZone *)zone
{
return _instance;
}
- (id)mutableCopyWithZone:(NSZone *)zone
{
return _instance;
}
#pragma mark MRC
- (oneway void)release
{
//
//
}
- (instancetype)retain
{
return _instance;
}
- (NSUInteger)retainCount
{
// return 1;
// : , retainCount = 1;
//
return MAXFLOAT;
}
@end
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.