Microsoft Word - iOSAppReverseEngineering.docx

(Romina) #1

Figure 9-27 Analyze getTimelineDataItemOfIndex


Therefore, the argument of getTimelineDataItemOfIndex: can be obtained from


[WCTimeLineViewController calcDataItemIndex:[indexPath section]]. Because we are inside


[WCContentItemViewTemplateNewSight onLongTouch], we can get MMTableViewCell,


MMTableView and WCTimeLineViewController in sequence via [self nextResponder], then get


indexPath via [MMTableView indexPathForCell:MMTableViewCell], and the whole process has


already been proved in section 9.2.6. Although it looks inconvenient, obtaining the


WCDataItem object from WCContentItemViewTemplateNewSight conforms to standard


MVC design pattern at least. It is worth mentioning that the prefixes of


WCTimeLineViewController and WCContentItemViewTemplateNewSight are WC, I guess it


is short for WeChat; the prefixes of MMTableViewCell and MMTableView are MM, I guess it is


short for MicroMessenger. The difference of prefixes may be exactly caused by different


subprojects and teams. Next, we will focus on WCDataItem and try to get the download URL


and local path of the Sight.


9.2.9 Get target information from WCDataItem


Open WCDataItem.h and take an overview:


@interface WCDataItem : NSObject <NSCoding>
{
int cid;
NSString *tid;
int type;
int flag;
NSString *username;
NSString *nickname;
int createtime;
NSString *sourceUrl;
NSString *sourceUrl2;
WCLocationInfo *locationInfo;
BOOL isPrivate;
NSMutableArray *sharedGroupIDs;
NSMutableArray *blackUsers;
NSMutableArray *visibleUsers;
unsigned long extFlag;
BOOL likeFlag;
int likeCount;
NSMutableArray *likeUsers;
int commentCount;
NSMutableArray *commentUsers;
int withCount;
NSMutableArray *withUsers;
WCContentItem *contentObj;
WCAppInfo *appInfo;
NSString *publicUserName;
Free download pdf