iOS object-c 사양
1. 코드 구조
함수 그룹과 protocol/delegate에서 이루어진 코드는
#pragema mark -
로 분할됩니다. 예를 들어 다음과 같습니다.#pragma mark - Lifecycle
- (instancetype)init {}
- (void)dealloc {}
- (void)viewDidLoad {}
- (void)viewWillAppear:(BOOL)animated {}
- (void)didReceiveMemoryWarning {}
#prageme mark - UITableViewDataSource
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
2. 코드 들여쓰기
코드 들여쓰기는 4개의 공백을 사용합니다. (만약 tab을 사용하면 1개의 tab을 4개의 공백으로 설정합니다.) 예를 들어:
if (enable) {
//Do Something
}
3. 코드 주석
코드 주석은 최신이고 유효한 주석을 유지하는 코드를 최대한 삭제해야 한다. 반드시 보존해야 하는 이유가 없으면 코드 자체 주석을 사용할 수 있는 상황에서 주석을 사용하는 것을 최대한 피해야 한다.
4. 이름 지정
OC의 명칭은 가능한 한 변수의 의미를 명확하게 표현하고 지나치게 길게 할 필요가 없다. 예를 들어 다음과 같다.
마땅히:
UIButton *settingButton
간략하게 쓰면 안 된다.
UIButton *setBtn
속성의 명칭은 낙타봉식, 단어의 알파벳 소문자를 채택한다.속성은 @property 키워드를 사용합니다. @ synthesize를 직접 쓰지 마십시오.
마땅히:
@property (nonatomic, copy) NSString *chatPlatform;
... 해서는 안 된다
id someValue
5. 속성 특성
모든 속성의 특성은 현시적으로 열거하고 속성 변수를 정의할 때 가능한 한 업무 모듈에 따라 정의해야 한다.공백 형식 참조 예:
마땅히:
//
@property (nonatomic, assign) int64_t chatId;
@property (nonatomic, copy) NSString *cmId;
//
@property (nonatomic, strong) LPEmojiAnimationView *smileAnimationView;
@property (nonatomic, strong) LPEmojiAnimationView *heartAnimationView;
다음을 수행하지 않아야 합니다.
@property (nonatomic,weak)IBOutlet UIView *containerView;
@property(nonatomic) NSString *tutorialName;
NSString은 strong 대신
copy
를 사용해야 합니다.6. 변수
CGFloat imageHeight = 44.0f
하지 말아야 한다. CGFloat h = 44.0f
NSString *text
, 아니오NSString * text
도 아니오NSString* text
7. 방법
방법의 명칭은 방법의 유형(-/+) 뒤에 빈칸이 있어야 한다.방법의 각 단락 사이에도 빈칸이 있어야 한다.매개 변수 앞에 이 매개 변수를 설명하는 키워드를 포함해야 합니다.
마땅히:
- (void)setUserName:(NSString *)name headImage:(UIImage *)headImage;
다음을 수행하지 않아야 합니다.
- (void)setUserName:(NSString *)name h:(UIImage *) headImage;
8. 액면가
NSString
,NSDictionary
,NSArray
,NSNumber
의 액면가는 이런 종류의 변하지 않는 실례를 만들 때 사용해야 한다.그러나nil값은 NSDictionary
,NSArray
자면값으로 전송되지 않아crash를 초래할 수 있습니다.마땅히:
NSArray *names = @[@"Brian", @"Matt", @"Chris", @"Alex", @"Steve", @"Paul"];
NSDictionary *productManagers = @{@"iPhone": @"Kate", @"iPad": @"Kamal", @"Mobile Web": @"Bill"};
NSNumber *shouldUseLiterals = @YES;
NSNumber *buildingStreetNumber = @10018;
다음을 수행하지 않아야 합니다.
NSArray *names = [NSArray arrayWithObjects:@"Brian", @"Matt", @"Chris", @"Alex", @"Steve", @"Paul", nil];
NSDictionary *productManagers = [NSDictionary dictionaryWithObjectsAndKeys: @"Kate", @"iPhone", @"Kamal", @"iPad", @"Bill", @"Mobile Web", nil];
NSNumber *shouldUseLiterals = [NSNumber numberWithBool:YES];
NSNumber *buildingStreetNumber = [NSNumber numberWithInteger:10018];
9. 상수
상수는 반복적으로 사용되고 대체되기 쉬워 빠르게 수정할 수 있는 값이다.상수는
static
로 대체하는 것이 아니라 #defeine
로 매크로를 정의하는 것을 사용해야 한다.마땅히:
static NSString *MyCellIdentifier = @"MyCellIdentifier";
static CGFloat const MyCellHeight = 44.0f;
다음을 수행하지 않아야 합니다.
#define MyCellIdentifier = @"MyCellIdentifier";
#define MyCellHeight = 44.0f;
#define
의 사용은 일부 매크로 함수의 정의에 사용할 것을 권장합니다. 예를 들어#define RGBCOLOR(r, g, b) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:1]
10.Case 문
컴파일러가 강제적으로 요구하지 않는 한case 문장에 괄호를 치는 것은 필수적이지 않습니다.하나의 케이스 문장에 여러 줄 코드가 있을 때, 괄호는 다음과 같이 붙여야 한다.
switch (condition) {
case 1:
// ...
break;
case 2: {
// ...
// Multi-line example using braces
break;
}
case 3:
// ...
break;
default:
// ...
break;
}
11. 부울 값
Objective-C 사용
YES
및 NO
.true 및 false를 사용하지 마십시오.nil
는 NO
로 해석되기 때문에 더 이상 조건문에서 비교할 필요가 없다.어떤 물건을 가지고 YES
와 직접 비교하지 마라.마땅히:
if (someObject) {}
if (![anotherObject boolValue]) {}
다음을 수행하지 않아야 합니다.
if (someObject == nil) {}
if ([anotherObject boolValue] == NO) {}
if (isAwesome == YES) {} // Never do this.
if (isAwesome == true) {} // Never do this.
12. 조건문
조건문 주체는 오류를 방지하기 위해 대괄호로 둘러싸야 한다. 설령 조건문 주체가 대괄호로 작성하지 않더라도. (예를 들어 한 줄의 코드만 사용한다.)이 오류는 두 번째 줄 코드를 추가하고if문장이 되기를 기대하는 것을 포함한다.또한, 이벤트 more dangerous defect는if문장에서 한 줄의 코드가 주석된 후에 다음 줄의 코드는if문장의 일부분이 될 수 있습니다.이외에도 이런 풍격은 다른 조건문장의 풍격과 일치하기 때문에 더욱 쉽게 읽을 수 있다.
마땅히:
if (!error) {
return success;
}
다음을 수행하지 않아야 합니다.
if (!error)
return success;
if (!error) return success;
13. 삼목 연산자
코드의 명확성과 간결성을 높여야 할 때 삼원 조작부호는?:사용할 수 있습니다.단일 조건으로 값을 구하는 것은 종종 그것을 필요로 한다.여러 조건으로 값을 구할 때if문장을 사용하거나 실례 변수를 재구성할 때 코드는 더욱 읽기 쉽다.일반적으로 삼원 조작부호를 사용하는 것은 조건에 따라 값을 부여하는 경우이다.
Non-boolean의 변수를 무언가와 비교하고 괄호()를 붙이면 가독성이 향상됩니다.비교된 변수가boolean 형식이라면 괄호가 필요하지 않습니다.
마땅히:
NSInteger value = 5;
result = (value != 0) ? x : y;
BOOL isHorizontal = YES;
result = isHorizontal ? x : y;
다음을 수행하지 않아야 합니다.
result = a > b ? x = c > d ? c : d : y;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.