Created
October 13, 2016 00:14
-
-
Save sodastsai/dbbe5034ef7b7b62d578fbd32685ee5f to your computer and use it in GitHub Desktop.
Auto release pool and NSError
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import <Foundation/Foundation.h> | |
// Assume -fobjc-arc ... 假設有 ARC | |
// | |
// 存成 `main.m` 然後在 Terminal 跑 `clang -framework Foundation -fobjc-arc -o main main.m && ./main && rm main` | |
// 然後在 `./main` 就會動囉 | |
// | |
NSArray *ggFunction1(NSError *__autoreleasing *error) { | |
@autoreleasepool { | |
if (error) { | |
*error = [NSError errorWithDomain:@"QQ domain" code:0 userInfo:nil]; | |
} | |
return nil; | |
} | |
} | |
NSArray *ggFunction2(NSError *__autoreleasing *error) { | |
@autoreleasepool { | |
if (error) { | |
*error = [[NSError alloc] initWithDomain:@"QQ domain" code:0 userInfo:nil]; | |
} | |
return nil; | |
} | |
} | |
NSArray *okFunction(NSError *__autoreleasing *outError) { | |
NSArray *result = nil; | |
NSError *error = nil; | |
@autoreleasepool { | |
error = [[NSError alloc] initWithDomain:@"OK domain" code:0 userInfo:nil]; | |
result = nil; // QQ | |
} | |
if (outError) { | |
*outError = error; | |
} | |
return result; | |
} | |
int main(int argc, char *argv[]) { | |
@autoreleasepool { | |
NSLog(@"OK Start --------------"); | |
NSError *error1; | |
NSArray *array1 = okFunction(&error1); | |
NSLog(@"ok: %@: %@", array1, error1); | |
NSLog(@"OK End --------------"); | |
NSLog(@"GG1 Start --------------"); | |
NSError *error2; | |
NSArray *array2 = ggFunction1(&error2); | |
NSLog(@"gg: %@: %@", array2, error2); | |
NSLog(@"GG1 End --------------"); | |
NSLog(@"GG2 Start --------------"); | |
NSError *error3; | |
NSArray *array3 = ggFunction2(&error3); | |
NSLog(@"gg: %@: %@", array3, error3); | |
NSLog(@"GG2 End --------------"); | |
} | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment