অ্যাপ্লিকেশানটি শুধুমাত্র ডিভাইসে চালানোর সময় সমস্যাটি ক্র্যাশ করছে

তাই আমি একটি খুব অদ্ভুত সমস্যা আছে যা যখন আমি সিমুলেটর আমার অ্যাপ চালানো এবং আইপ্যাড প্লাগ ইন (তারের প্লাগ ডিভাইস সঙ্গে অ্যাপ্লিকেশন চলমান) এটা সব ঠিক ঠিক কাজ করে। তবে এটি প্লাগ করার পরে ডিভাইসটি চালানোর পরে এবং আমি অ্যাপ ব্যবহার করার চেষ্টা করেছি, এটি ক্র্যাশ করে .. ডিভাইস ক্র্যাশ লোগগুলি দেখার চেষ্টা করেছি এবং আমি দেখেছি:

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libobjc.A.dylib                 0x3672bf78 objc_msgSend + 16
1   App                     0x000ca834 -[AHAppImageData dealloc] (AHInstagramImageData.m:122)
2   libobjc.A.dylib                 0x3672d16e _objc_rootRelease + 30
3   CoreFoundation                  0x33d792e0 CFRelease + 88
4   CoreFoundation                  0x33d8ea30 -[__NSArrayM removeObjectAtIndex:] + 288
5   CoreFoundation                  0x33d84adc -[NSMutableArray removeAllObjects] + 64
6   App                     0x000f717e -[AHImageDataSource clearDataSource] (AHImageDataSource.m:53)
7   App                     0x000c0a36 __49-[AHMainViewController loadRequestWithURLString:]_block_invoke_0 (AHMainViewController.m:91)
8   libdispatch.dylib               0x32658c52 _dispatch_call_block_and_release + 6
9   libdispatch.dylib               0x3265aee0 _dispatch_main_queue_callback_4CF$VARIANT$mp + 188
10  CoreFoundation                  0x33e032a6 __CFRunLoopRun + 1262
11  CoreFoundation                  0x33d8649e CFRunLoopRunSpecific + 294
12  CoreFoundation                  0x33d86366 CFRunLoopRunInMode + 98
13  GraphicsServices                0x37d68432 GSEventRunModal + 130
14  UIKit                           0x36820cce UIApplicationMain + 1074
15  App                     0x000b2860 main (main.m:16)
16  App                     0x000b2820 0xb1000 + 6176

কোনও ধারণা কেন এই ডিভাইসে শুধুমাত্র ঘটছে এবং না যখন প্লাগ ইন বা সিমুলেটর অ্যাপ্লিকেশন চালানোর সময়?

নীচের মন্তব্যের উপর ভিত্তি করে, আমি এই কোডটি দেখছি যা এই জন্য দায়ী:

 [[AHMyAppAPIClient sharedClient] getPath:requestURLPath parameters:nil 
             success:^(AFHTTPRequestOperation *operation, id response) {
                 [self.progressHUD_ hide:YES];


                 self.nextPaginationURL_ = [[response valueForKey:@"pagination"] valueForKey:@"next_url"];

                 [self.collectionView_.pullToRefreshView stopAnimating];
                 [[NSOperationQueue sharedOperationQueue] cancelAllOperations];


                 NSArray *arr = [response valueForKey:@"data"];
                 if ([arr count] > 0){
                     [[AHImageDataSource sharedDataSource] clearDataSource];
                 }


                for (NSDictionary * data in arr){
                     AHInstagramImageData * imgData = [[AHInstagramImageData alloc] initWithData:data];
                     [[AHImageDataSource sharedDataSource] addObject:imgData];
                     [imgData release];
                 }


                 dispatch_async(dispatch_get_main_queue(), ^{
                     [self.collectionView_ setContentOffset:CGPointMake(0, 0)];
                     [self.collectionView_ reloadData];

                 });

             }
             failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                 [self.progressHUD_ hide:YES];
                 NSLog(@"Error fetching user data!");
                 NSLog(@"%@", error);      

             }];

এইভাবে আমি কিভাবে ডাটা উৎস সেট করছি:

extern NSString * const kClearDataSource;

@interface AHImageDataSource : NSObject
+ (AHImageDataSource *)sharedDataSource;
- (void) clearDataSource;
- (void) addObject:(id) object;
- (void) addObject:(id)object atIndex:(int) index;
- (int) count;
- (id) objectAtIndex:(int) index;
@end


NSString * const kClearDataSource = @"clearDataSource";

@interface AHImageDataSource()
{
    NSMutableArray * imageDataSource_;
}

@property (nonatomic, retain) NSMutableArray * imageDataSource_;

@end

@implementation AHImageDataSource
@synthesize imageDataSource_;

+ (AHImageDataSource *)sharedDataSource {
    static AHImageDataSource *_sharedClient = nil;
    static dispatch_once_t oncePredicate;
    dispatch_once(&oncePredicate, ^{
        _sharedClient = [[self alloc] init];
    });

    return _sharedClient;
}


- (id)init {
    self = [super init];
    if (!self) {
        return nil;
    }

    NSMutableArray * temp = [[NSMutableArray alloc] initWithCapacity:200];
    self.imageDataSource_  = temp;
    [temp release];


    return self;
}

-(void) clearDataSource
{
    if ([self.imageDataSource_ count] > 0){
        [self.imageDataSource_ removeAllObjects];
    }

}

- (void) addObject:(id) object
{
    [self.imageDataSource_ addObject:object];
}

- (void) addObject:(id)object atIndex:(int) index
{
    [self.imageDataSource_ insertObject:object atIndex:index];
}

- (int) count
{
    return [self.imageDataSource_ count];
}

- (id) objectAtIndex:(int) index
{
    if (index >= 0 && index < [self.imageDataSource_ count]){
        return [self.imageDataSource_ objectAtIndex:index];
    } 

    return nil;
}

- (void) dealloc
{
    [super dealloc];
    [imageDataSource_ release];
}

@end

সম্পাদনা করুন:

এটা মনে হয় যে NSZombieEnabled এই সমস্যাটি গোপন করতে লাগলো। আমি যখন NSZombieEnabled অক্ষম এটি সিমুলেটর এবং ডিভাইসের উপর এখন ক্র্যাশ।

2
যোগ সম্পাদিত
মতামত: 1
NSZombieEnabled সমস্যা গোপন করা হয়, তাহলে, এটি প্রায় অবশ্যই একটি ডবল বিনামূল্যে। খুব অদ্ভুত যে যন্ত্রাদি টেমপ্লেটটি তা পছন্দ করেনি ...
যোগ লেখক MobileVet, উৎস

2 উত্তর

আমি জিমের সাথে একমত, একটি ডাবল রিলিজের মতো দেখায়।

আমি এই অবস্থার জন্য পরীক্ষা ইনস্ট্রুমেন্টস ' জুম্বি ' প্রোফাইল ব্যবহার করব। এটি শুধুমাত্র সিমুলেটরতে করা যেতে পারে, কিন্তু আপনাকে ডাবল প্রকাশ করা হচ্ছে তা ঠিকভাবে দেখানো উচিত।

একবার যে 100% পরিষ্কার, পরিস্থিতিটি সমাধান করার জন্য সাধারণত এটি বেশ সহজ।

1
যোগ
হ্যাঁ, কিন্তু আপনাকে একটি বিশেষ সরঞ্জামের টেমপ্লেট ব্যবহার করতে হবে যা এটি খুব স্পষ্ট করবে। আমি একটি ইমেজ অন্তর্ভুক্ত হতে পারে ... যদি আপনি বামে iOS সিমুলেটর টেম্পলেট ফিল্টার 'মেমরি' ক্লিক করেন, তাহলে আপনি 'Zombies' 5th বিকল্প হিসাবে দেখতে পাবেন (দ্বিতীয় সারির প্রথম) এবং এটি সবকিছুর জন্য সেটআপ করা উচিত আপনি.
যোগ লেখক MobileVet, উৎস
এটা সিমুলেটর নেভিগেশন জরিমানা কাজ হিসাবে zombies ব্যবহার করতে পারবেন না .. ক্র্যাশ না
যোগ লেখক adit, উৎস
ডিভাইস থেকে NSZombies ব্যবহার করার চেষ্টা করে এবং ডিভাইসে একই ধাপ reproducing যখন কোন লিপ দেখতে না
যোগ লেখক adit, উৎস
আপনি কি স্ক্রিপ্টে NSZombieEnabled মানে?
যোগ লেখক adit, উৎস
Yup..I ছিল যে সঙ্গে চলমান যন্ত্র। এটি স্বাভাবিক রান এবং আমি কোন ডবল রিলিজ বা কি কখনও কখনও দেখতে না
যোগ লেখক adit, উৎস
এটি কঠিন .. এটি একটি simulator নেভিগেশন জরিমানা কাজ করে এবং ডিভাইস এটি চলমান যখন .. আমি উভয় ক্ষেত্রে লোগো ব্যবহার করে এটি প্রমানিত এবং আমি দ্বিগুণ কিছু মুক্তি যে কোন ইঙ্গিত দেখতে পাইনি .. আমি এটি চালানোর সময় একটি ডিভাইস তারের সাথে সংযুক্ত নয় .. এটি ক্র্যাশ
যোগ লেখক adit, উৎস
আমি উপরে আরো কিছু তথ্য যোগ করা
যোগ লেখক adit, উৎস
এটি অগত্যা সিমুলেটর জরিমানা কাজ করে না। যখন আপনি কিছু ছেড়ে চলে যান, এটি দুর্ঘটনা বা না হয় কিনা তা নিখুঁত ভাগ্য। ওভার রিলিজ এখনও যদিও, এবং জাগতিক দৃষ্টিভঙ্গি নির্বিশেষে কাজ করা উচিত।
যোগ লেখক Jim, উৎস
আপনি একটি লিক খুঁজছেন না, আপনি একটি ডবল রিলিজ খুঁজছেন, যা মূলত একটি ফুটা বিপরীত হয়। রান বিভাগের বিকল্পগুলিতে আপনার স্কিমটি সম্পাদনা করুন এবং জাম্বি অবজেক্টগুলি সক্ষম করুন।
যোগ লেখক Jim, উৎস
এবং আপনার ডিভাইসে কোড চালানোর সময় আপনি NSZombies ব্যবহার করতে পারেন।
যোগ লেখক Abizern, উৎস

এটি দেখায় যে আপনি একটি কোডে এটি লিখে AHInstagramImageData </​​code> এর একটি উদ্বৃত্ত উদ্বোধন করছেন, তারপর এটিটি বরাদ্দকরণের জন্য যথেষ্ট সংখ্যক সংখ্যক গণমাধ্যমকে কমিয়ে আনা। তারপর, যখন এটি অভিধান থেকে সরানো হয়, এটি আবার প্রকাশ করা হয় এবং এটি কোনও বস্তুর জন্য মেমরি বরখাস্ত করার চেষ্টা করে যা আর বিদ্যমান নেই

কোড দায়বদ্ধ পোস্ট করুন এবং আপনি আরও বিস্তারিত সাহায্য পেতে পারেন। একা একটি ক্র্যাশ লগ সত্যিই যেতে যথেষ্ট নয়।

0
যোগ
আমি এর জন্য দায়ী কোড যোগ করা .. আশা করি আপনি আরও সাহায্য করতে পারেন .. আমি ডবল রিলিজ যেখানে যেখানে আমি দেখতে না হয়
যোগ লেখক adit, উৎস
আমি কিভাবে তথ্য উত্স সেট উপর যোগ করা হয়েছে। যদি আপনি এটি খুঁজছেন কি আপনি জানতে চাই
যোগ লেখক adit, উৎস
আমি উপরে এই কোডটি যোগ করেছি কিভাবে আমি এই সম্পত্তিটি সংজ্ঞায়িত করছি .. আমি জানি এটা অদ্ভুত অভ্যাস
যোগ লেখক adit, উৎস
যে কোডটি ত্রুটি সৃষ্টি করছে, কিন্তু সম্ভবত সম্ভবত আপনি সেট করুন ডাটা উৎস। আপনি যে পোস্ট করতে পারেন?
যোগ লেখক Jim, উৎস
স্ব .imageDataSource_ = temp; সঠিক দেখায় না। আপনি সম্পত্তি সিনট্যাক্স ব্যবহার করছেন, কিন্তু একটি ব্যক্তিগত ivar নামকরণ প্রচলন। আপনার কোড কম্পাইল করা থেকে, আপনি একটি সম্পত্তি ব্যবহার করছেন, কিন্তু আপনি তাদের মধ্যে পার্থক্য সম্পর্কে মিশ্রিত বলে মনে হচ্ছে। কিভাবে আপনি এই সম্পত্তি সংজ্ঞা?
যোগ লেখক Jim, উৎস