 <p>You've said: <code>MainScreen2 *testJudith;</code> which sets testJudith to nil.</p> <p>You then created an array:</p> <pre><code>NSMutableArray *testJudithArray = [[NSMutableArray alloc]init]; </code></pre> <p>You then RESET testJudithArray to a mutable copy of testJudith's Judith array:</p> <pre><code>testJudithArray = [testJudith.Judith mutableCopy]; </code></pre> <p>But testJudith is nil. You haven't set it as anything. Which means the property of nil will always be/return nil. You then try to make a mutableCopy of nil. Thus, testJudithArray becomes nil.</p> <p>You have not created a testJudith to begin with, so you then never create the array you are asking to make a mutable copy of. The mutableCopy method thus returns nil (as any message sent to nil returns nil).</p> <p>Does this explain enough where your error is?</p>