Does it replicate the behaviour of the various libraries (so the calls are exactly the same) or just codes them from scratch using unique optimizations and new ways to do their stuff?
Is Cocotron the result of reverse engineering?
765 Views Asked by John Smith At
2
There are 2 best solutions below
6
andyvn22
On
Cocotron's internal implementation is fairly different from Cocoa's. I wouldn't say there's any "reverse engineering" involved.
You should know there's a history of having separate implementations of Cocoa's API (sort of). Cocoa grew out of OpenStep, which was originally designed as a specification with many different implementations on different platforms.
Related Questions in OBJECTIVE-C
- How do I customize NSOutlineView to have border color?
- UIWebView Screen Fitting Issue
- How to hide "Now playing url" in control center
- CloudKit: Preventing Duplicate Records
- Image and Text locations in UIButton
- setting OpenGL version in objective-C
- Setup code for xibs in iOS. -awakFromNb:
- realm db, get parent link of object
- CFBundleDocumentType is not working in myproject-Info.plist file
- UIPopoverPresentationController not rendering properly
- Using Storyboard Reference
- Pass Data between two view controllers using 'Delegation' : Objective-C
- Unexpected CALayer Vertical Flipping on 3D Rotation 'Bounce'
- Setting View orientation to portrait is ignored
- UITextField append / between dates while enforcing character limit
Related Questions in COCOA
- How do I customize NSOutlineView to have border color?
- How to generate request format for WCF web service method for Mac and iPhone
- How to Handle Command Line Prompt from a Cocoa App
- Change views inside NSSplitViewController
- CMYK NSImage get pixel data
- Reactive Cocoa Conditional Split ?
- Set background color of NSImageView with proportionally sized image
- Use NSWindow or NSViewController?
- Imports and includes in header files - when is it okay?
- How to prevent the app from automatically open a window when launched?
- Swift NSViewController responds to mouseDown event, but not keyDown event
- "stringByAddingPercentEncodingWithAllowedCharacters" replaces more characters than it should
- cocoa - what happen when close a window (by pressing the red X button)?
- Does it necessary to go back to main thread to update UI?
- WebView not responding to Keyboard input
Related Questions in REVERSE-ENGINEERING
- How to break code on a click event?
- How to increment versionCode using APKTool?
- Alloy traces and projection issues
- Understanding assembly of a simple C program
- Bomb lab phase 5
- I am not able to generate hibernate.reveng.xml
- Database reverse engineering tool with columnDefinition support
- Unable to see all the classes in an android application using AndBug tool
- Reverse engineer database in spring data rest
- Entity Framework 6.1 - debug t4 script execution with customized code first reverse engineering
- Differences between call, push+ret and push+jump in assembly
- Bomb lab assembly explanation
- Android bytecode: value of some variables not defined
- Reverse engineering proprietary magnetic card formats
- How many arguments are passed in a function call?
Related Questions in COCOTRON
- Cocotron with pyobjc?
- Feasible to switch to objective-c on these platforms and situation?
- Foundation.h on Windows
- cocotron - installCDT installation help
- Link error with Cocotron
- Generating an EXE with Cocotron
- Link with SDL using Cocotron CDT
- Is Cocotron the result of reverse engineering?
- How to run Objective-C binary on a web server?
- Getting a console or error log from a Cocotron app
- Looking for a cocotron example
- Problems with Cocotron
- Trying to understand why Cocotron isn't creating Framework DLLs
- How can I set up a Windows build in Xcode with Cocotron?
- How can I use The Cocotron to build a simple app for Windows?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
There are different kinds of reverse engineering grouped roughly into Dirty-Room and Clean-Room. Dirty-Room basically involves disassembling machine code in some way to figure out what it does and using the disassembled code to create new code. Dirty-Room creates the problem of copyright infringement, you're basically plagiarizing the old system to create the new system either directly or indirectly through direct knowledge of the old systems implementation. Clean-Room involves implementing the same API's using documentation and testing against the system to be re-implemented. These two techniques can be used on their own or in various combinations together. For example the PC BIOS was reverse engineered using two teams, a Dirty-Room team which disassembled the original BIOS and created a specification and a Clean-Room team which implemented the new BIOS using the specification. High stake business situations for reverse engineering usually involves lawyers specializing in the field to create a proper new implementation which does not infringe on the old one.
Cocotron is a Clean-Room implementation. I/We use the documentation and test programs to create a new implementation (Cocotron) which matches the behavior of the old implementation (Cocoa). The Apple documentation is very good, the API's are organized well and it is easy to create test programs when needed. Cocotron is pretty good if I do say so, but it is definitely not Cocoa and I would imagine the sources vary wildly between the two.