iOS 면접문제 3
3650 단어 iOS 면접
1) 프로그램 입구main 함수에서 UIApplication 인스턴스와 UIApplication 프록시 인스턴스를 만듭니다.
2) UIAPplication 프록시 인스턴스에서 시작 방법을 재작성하고 루트 ViewController를 설정합니다.
3) 루트 ViewController에 컨트롤을 추가하여 애플리케이션 인터페이스를 구성합니다.
2. 왜 많은 내장 클래스, 예를 들어 UItable ViewControl의delegate 속성은retain이 아닌assign입니까?예를 들어 설명해 주세요.
반복 참조 방지
여기delegate 우리는 그delegate 방법을 실현한 대상을 얻고 이 대상의 바늘을 얻으면 된다. 우리는 그것을 바꾸거나 다른 조작을 원하지 않기 때문에 assign으로 바늘을 얻으면 된다.
리턴을 사용하면 계수기에 1을 더한다.우리는 다른 곳에서delegate라는 대상을 방출하기를 기대하고, 예를 들어 그것이 방출되었는지, 조작되었는지 판단할 수 있다.하지만 실제로는 리턴 카운트가 1로 풀려나지 않았고,
양자는 서로 가지고 있다.RC는 영원히 0이 되지 않는다.dealloc는 실행되지 않습니다. 둘 다 풀리지 않습니다.
(한 대상이 자신의delegate의 생명주기를 관리할 필요가 없거나 그 대상을 가질 필요가 없기 때문에 우리는 그 대상의 바늘만 알면 된다. 바늘로 대상을 찾아 호출하는 방법)
3. UItableView를 사용할 때 반드시 수행해야 하는 몇 가지 방법은?
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
4. 편리한 구조기를 쓴다.
- (id)initWithName(NSString *)name age(int)age sex(NSString *)sex
{
self = [super init];
if (self){
_name = name;
_age = age;
_sex = sex;
}
return self;
}
+ (id)initWithName(NSString *)name age(int)age sex(NSString *)sex
{
Person *p = [[Person alloc]initWithName:name age:age sex:sex];
return [p autorelease];
}
5. UIImage에서 그림을 초기화하는 방법은 몇 가지가 있습니까?각자의 장단점을 약술하다
imageNamed: 시스템은 시스템 캐시에 이 이름의 Image가 있는지 확인하고 있으면 바로 되돌려주고 없으면 캐시에 이미지를 불러온 다음 되돌려줍니다.
initWithContentsOffile: 시스템은 시스템 캐시를 검사하지 않고 파일 시스템에서 직접 불러오고 돌아옵니다.
imageWithCGImage:scale:orientationscale=1일 때 그림이 원시 크기이고orientation은 그림을 그리는 방향을 정합니다.
imageWithData;
6. 개인의retainCount 값을 대답하고 왜
Person * per = [[Person alloc] init];
self.person = per;
RC= 2;
per.retainCount = 1 ,
set 메서드 호출retain
setter 방법 인용 계수 다시 +1
7.이 코드에 무슨 문제가 있습니까?
@implementation Person
- (void)setAge:(int)newAge {
self.age = newAge;
}
@end
self.age는 왼쪽에서도 setter 방법에 해당하며, 이로 인해 사순환을 초래한다
8.이 코드에 무슨 문제가 있으면 어떻게 수정합니까
for (int i = 0; i < someLargeNumber; i++) {
NSString *string = @"Abc";
string = [string lowercaseString];
string = [string stringByAppendingString:@"xyz"];
NSLog(@"%@", string);
}
변경: 순환에 자동 방출 탱크 @autoreleasepool {}를 추가합니다.
for (int i = 0; i < someLargeNumber; i++) {
@autoreleasePool{NSString *string = @"Abc";
string = [string lowercaseString];
string = [string stringByAppendingString:@"xyz"];
NSLog(@"%@", string);
}
}
메모리 유출.방법이 자체로 가지고 있는 자동 방출탱크는 방출할 겨를이 없다.
for 순환에 메모리 탱크를 추가하여 하나를 방출합니다
9. 문자열 캡처 "20 |http://www.baidu.com보통, | 문자의 앞뒤 데이터를 각각 출력합니다.
NSString *str = @"20|http://www.baidu.com";
NSArray *arr=[str componentsSeparatedByString:@"|"];
NSLog(@"%@%@",[arr objectAtIndex:0], [arr objectAtIndex:1]);
10.obj-c로 거품 정렬 쓰기
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"25",@"12",@"15",@"8",@"10", nil];
for (int i = 0; i < array.count - 1; i++) {
int a = [array[i] intValue];
for (int j = i + 1; j < array.count; j++) {
int b = [array[j] intValue];
if (a < b) {
[array exchangeObjectAtIndex:i withObjectAtIndex:j];
}
}
}
for (int i = 0; i < array.count; i++) {
NSLog(@"%@",array[i]);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
면접문제 시리즈(4) - 데이터 분석3. json,xml 해석 방식의 밑바닥은 어떻게 처리합니까? XML 해석에서 자주 사용하는 해석 방법은 두 가지가 있는데 그것이 바로 DOM 해석과 SAX 해석이다.DOM은 트리 구조를 만드는 방식으로 XML 문서...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.