SafeKit 1.4.1

SafeKit 1.4.1

LangLanguage Obj-CObjective C
License Apache 2
ReleasedLast Release Feb 2016

Maintained by JJMM.

SafeKit 1.4.1

  • By
  • JJMM

SafeKit could greatly reduce the probability of crash.
It’s very easy to use without modifying any code.

How To Get Started


pod "SafeKit"

Exchange the method in NSArray,NSDictionary…

+ (void) load{
    [self safe_swizzleMethod:@selector(safe_objectAtIndex:) tarClass:@"__NSArrayI" tarSel:@selector(objectAtIndex:)];
        [self safe_swizzleMethod:@selector(safe_arrayByAddingObject:) tarClass:@"__NSArrayI" tarSel:@selector(arrayByAddingObject:)];

Unit Test

@interface NSArrayTests : XCTestCase

@property (strong, nonatomic) NSArray *array;


@implementation NSArrayTests

- (void)setUp {
    [super setUp];
    self.array = @[@"0", @"1", @"2"];

- (void)tearDown {
    [super tearDown];

- (void)testObjectAtIndex {
    id value = [self.array objectAtIndex:10];
    XCTAssert(value == nil);
    value = self.array[10];
    XCTAssert(value == nil);

- (void)testArrayByAddingObject {
    id value = nil;
    [self.array arrayByAddingObject:value];


Test success!


SafeKit is licensed under the terms of the Apache License, version 2.0. Please see the LICENSE file for full details.


Contributions are totally welcome. We'll review all pull requests and if you send us a good one/are interested we're happy to give you push access to the repo. Or, you know, you could just come work with us.

Please pay attention to add Star, your support is my greatest motivation, thank you.