top button
Flag Notify
    Connect to us
      Site Registration

Site Registration

What does it mean when you assign [super init] to self?

+2 votes
848 views

What does it mean when you assign [super init] to self?
What is self parameter?

posted Apr 21, 2014 by Khusboo

Share this question
Facebook Share Button Twitter Share Button LinkedIn Share Button

1 Answer

+2 votes
 
Best answer

In short -

You don't need to assign [super init] to self to make most classes work. In some obscure cases, it is actually the wrong thing to do.

So why do we continue to assign to self? It's the traditional template for an initializer, and although it's wrong in some cases, it is right in other cases which have been written to expect this approach.

Further to this is the consideration that class clusters and other classes likely to return unrelated or different, fully initialized objects from their init methods are not supposed to be subclassed in a normal way — making code which favors them less relevant.

The number of cases where super returns an unrelated object are so small that they can easily be dealt with on a case-by-case basis — a class will normally make it very clear when its initializers might return something other than the receiver or nil.

For more detail answer please look at the http://www.cocoawithlove.com/2009/04/what-does-it-mean-when-you-assign-super.html

answer Apr 22, 2014 by Meenal Mishra
Similar Questions
+1 vote

I am trying to get index path of cell when we make swipe.

I used below code to recognise cell swipe

in cellForRowAtIndexPath

UISwipeGestureRecognizer *cellRightSwipe = [[UISwipeGestureRecognizer alloc]initWithTarget:self   action:@selector(cellRightSwipeGeture:)];
    [cellRightSwipe setDirection:UISwipeGestureRecognizerDirectionRight];
    [cell addGestureRecognizer:cellRightSwipe];

and action for RightSwipe

-(void)cellRightSwipeGeture:(UISwipeGestureRecognizer *)gestureRecognizer {
NSIndexPath *indexPath ;
UITableViewCell *cell = [_subItemTbl cellForRowAtIndexPath:indexPath];}

Here i can't identify that which cell was i swiped .

+1 vote

Building an iOS app for reading articles. I’m using Facebook SDK to share the article link and image on Facebook.

This is the process:

  1. After clicking on bar button item on top right, UIActivityViewController gets opened on the bottom of the screen which gives option to share via fb, google , linked in etc.

  2. On clicking the Facebook button in UIActivityVIewController, default screen opens for sharing but ideally fb SDK code should get executed.

The following "if condition” does not executed.

  [AVC setCompletionHandler:^(NSString *activityType, BOOL completed)

 {
    if([activityType isEqualToString: UIActivityTypePostToFacebook]){
     FBLinkShareParams *params = [[FBLinkShareParams alloc] init];
  1. But when clicked on the cancel button of the default screen, “if condition" gets executed and app is able to share the article as expected.

Here is the code.

- (IBAction)ysshareAction:(id)sender {

NSURL *Imageurl = [NSURL URLWithString:_DetailModal1[2]];
NSData *data =  [NSData dataWithContentsOfURL:Imageurl];

UIImage *image = [[UIImage alloc] initWithData:data];

      NSURL *linkURL = [NSURL URLWithString:_DetailModal1[4]];//article url

 NSMutableAttributedString *stringText = [[NSMutableAttributedString alloc] initWithString:_DetailModal1[0]];//_DetailModal1[0] contain article title////
  [stringText addAttribute:NSLinkAttributeName value:linkURL range:NSMakeRange(0, stringText.length)];

NSArray *itemArrany = @[stringText,image,];//title is displayed but not as hyperlink.
  UIActivityViewController *AVC = [[UIActivityViewController alloc] initWithActivityItems:itemArrany applicationActivities:nil];
   AVC.excludedActivityTypes=@[];
   [AVC setCompletionHandler:^(NSString *activityType, BOOL completed)

  {
   if([activityType isEqualToString: UIActivityTypePostToFacebook]){

          FBLinkShareParams *params = [[FBLinkShareParams alloc] init];
          params.link = [NSURL URLWithString:@"https://www.youtube.com/watch?v=pa8lsBNG31c"];
                //    // If the Facebook app is installed and we can present the share dialog
        if ([FBDialogs canPresentShareDialogWithParams:params]) {

            // Present share dialog
            [FBDialogs presentShareDialogWithLink:params.link
                                          handler:^(FBAppCall *call, NSDictionary *results, NSError *error) {
                                              if(error) {
                                                  // An error occurred, we need to handle the error
                                                  // See: https://developers.facebook.com/docs/ios/errors
                                                  NSLog(@"Error publishing story: %@", error.description);
                                              } else {
                                                  // Success
                                                  NSLog(@"result %@", results);
                                              }
                                          }];

            // If the Facebook app is NOT installed and we can't present the share dialog
        } else {
            // FALLBACK: publish just a link using the Feed dialog

            // Put together the dialog parameters
            NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                       @"YourStory", @"name",
                                           _DetailModal1[0], @"caption",
                                           _DetailModal1[4], @"link",
                                           _DetailModal1[2], @"picture",
                                           nil];

            // Show the feed dialog
            [FBWebDialogs presentFeedDialogModallyWithSession:nil
                                                   parameters:params
                                                      handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) {
                                                        if (error) {
                                                              // An error occurred, we need to handle the error
                                                              // See: https://developers.facebook.com/docs/ios/errors
                                                              NSLog(@"Error publishing story: %@", error.description);
                                                          } else {
                                                              if (result == FBWebDialogResultDialogNotCompleted) {
                                                                  // User canceled.
                                                                  NSLog(@"User cancelled.");
                                                              } else {
                                                                  // Handle the publish feed callback
                                                                  //   NSDictionary *urlParams = [self parseURLParams:[resultURL query]];

                                                                  //  if (![urlParams valueForKey:@"post_id"]) {
                                                                  // User canceled.
                                                                  NSLog(@"User cancelled.");

                                                                  //    } else {
                                                                  // User clicked the Share button
                                                                  //         NSString   *result = [NSString stringWithFormat: @"Posted story, id: %@", [urlParams valueForKey:@"post_id"]];
                                                                 //        
                                                              }
                                                          }



                                                      }];


        }
           }
            }];
 [self presentViewController:AVC animated:YES completion:nil];
      }

Any help is really appreciated.

0 votes

Here i want to know any simple way to check whether NSMutableArray contains specified object. I used for loop to find the object at index is same or not, but its get sucks processing because my array contains plenty of objects.

+1 vote

I want to check specified table contains value or its empty. I used number of complex method to find but no luck, any body can help me.

0 votes

How to convert NSMutableData to NSString.

...